Quindi l'arresto è causato dal fatto che il puntatore db è nullo. Ciò significa che il codice che tenta di utilizzare quella connessione sulla riga 40 provoca il panico.
rows, errrows := db.Query(...
Il puntatore db è nullo perché, come ha sottolineato Peter, http.ListenAndServe sta bloccando, il che significa niente dopo che verrà eseguito.
Prova a eseguire questo esempio localmente per vedere il problema:
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)")
}
Non vedrai il messaggio Codice in esecuzione.