Der Absturz wird also dadurch verursacht, dass der db-Zeiger null ist. Dies bedeutet, dass Code, der versucht, diese Verbindung in Zeile 40 zu verwenden, eine Panik auslöst.
rows, errrows := db.Query(...
Der db-Zeiger ist null, weil, wie Peter betonte, http.ListenAndServe blockiert, was nichts bedeutet nachdem es laufen wird.
Versuchen Sie, dieses Beispiel lokal auszuführen, um das Problem zu sehen:
package main
import (
"net/http"
)
func Group(res http.ResponseWriter, req *http.Request) {
println("group handler")
}
func main() {
http.HandleFunc("/group/", Group)
err := http.ListenAndServe(":9001", nil)
if err != nil {
panic(err)
}
println("Running code after ListenAndServe (only happens when server shuts down)")
}
Sie werden die Running-Code-Meldung nicht sehen.