Ainsi, le crash est causé par le fait que le pointeur db est nul. Cela signifie que le code qui tente d'utiliser cette connexion sur la ligne 40 provoque une panique.
rows, errrows := db.Query(...
Le pointeur db est nil car, comme Peter l'a souligné, http.ListenAndServe bloque, ce qui signifie rien après il fonctionnera.
Essayez d'exécuter cet exemple localement pour voir le problème :
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)")
}
Vous ne verrez pas le message Code en cours d'exécution.