Portanto, a falha é causada pelo ponteiro db ser nil. Isso significa que o código que tenta usar essa conexão na linha 40 causa um pânico.
rows, errrows := db.Query(...
O ponteiro db é nil porque, como Peter apontou, http.ListenAndServe está bloqueando, o que significa nada depois ele será executado.
Tente executar este exemplo localmente para ver o 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)")
}
Você não verá a mensagem de código em execução.