Entonces, el bloqueo se debe a que el puntero db es nulo. Esto significa que el código que intenta usar esa conexión en la línea 40 provoca pánico.
rows, errrows := db.Query(...
El puntero db es nulo porque, como señaló Peter, http.ListenAndServe está bloqueando, lo que significa nada. después de que se ejecutará.
Intente ejecutar este ejemplo localmente para ver el 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)")
}
No verá el mensaje de código en ejecución.