Така че сривът е причинен от това, че db указателят е нула. Това означава, че кодът, който се опитва да използва тази връзка на ред 40, предизвиква паника.
rows, errrows := db.Query(...
Указателят db е нула, защото, както Питър посочи, http.ListenAndServe блокира, което означава нищо след като ще тече.
Опитайте да стартирате този пример локално, за да видите проблема:
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)")
}
Няма да видите съобщението Running code.