在函数内部时变量变为 nil

为什么db变量在函数nil中getBooks?


package main


import (

    ...

)


var db *sql.DB


func init() {

    gotenv.Load()

}


func main() {


    db, err := sql.Open("postgres", os.Getenv("ELEPHANTSQL_URL"))

    err = db.Ping()

    fmt.Println(db, err)


    router := mux.NewRouter()

    router.HandleFunc("/books", getBooks).Methods("GET")

    log.Fatal(http.ListenAndServe("localhost:8000", router))

}


func getBooks(w http.ResponseWriter, r *http.Request) {

    if db == nil {

        log.Print("!!!!!!!!!!")

        os.Exit(2)

    }

}


森林海
浏览 88回答 1
1回答

繁星coding

随着:=您在范围db内声明一个新变量main(),而不是db在包范围内分配给变量。您必须使用 just=或使用除db.尝试这个:var err errordb, err = sql.Open("postgres", os.Getenv("ELEPHANTSQL_URL"))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go