Jadi crash disebabkan oleh pointer db menjadi nihil. Ini berarti kode yang mencoba menggunakan koneksi itu pada saluran 40 menyebabkan kepanikan.
rows, errrows := db.Query(...
Pointer db adalah nihil karena, seperti yang ditunjukkan Peter, http.ListenAndServe memblokir, yang berarti tidak ada setelah itu akan berjalan.
Coba jalankan contoh ini secara lokal untuk melihat masalahnya:
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)")
}
Anda tidak akan melihat pesan Running code.