在函数内部时变量变为零

user8049659:

为什么db变量nilgetBooks函数中?

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)
    }
}
Moshe Revah:

随着:=你宣布一个新的db变量内部main()范围,而不是分配给db在包范围的变量。

您必须使用just =或使用以外的名称db

试试这个:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章