亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Go 中將數據庫連接初始化作為一個包分開?

如何在 Go 中將數據庫連接初始化作為一個包分開?

Go
萬千封印 2023-03-21 15:44:12
我有兩個包,main和db. 但是,我收到"DB declared and not used"錯誤。數據庫package dbimport (  "database/sql")var DB *sql.DBfunc Connect() {  DB, err := sql.Open("mysql", "root:xxxx@/xxxx")  if err != nil {    panic(err.Error())  }}func Close() {  DB.Close()}主程序package mainimport (    "database/sql"    // "fmt"    _ "github.com/go-sql-driver/mysql"    "html/template"    "net/http"  "github.com/****/****/config"  "github.com/****/****/db")var tpl *template.Templatefunc init() {    tpl = template.Must(template.ParseGlob("templates/*.gohtml"))}func main() {    Connect()    defer Close()    loadRoutes()    http.ListenAndServe(":8080", nil)}
查看完整描述

2 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

Golang 對變量聲明的要求很嚴格,在Golang FAQs中也有提到:

未使用的變量的存在可能表示存在錯誤,而未使用的導入只會減慢編譯速度,隨著時間的推移,隨著程序積累代碼和程序員,這種影響可能會變得很明顯。由于這些原因,Go 拒絕使用未使用的變量或導入來編譯程序,以短期便利換取長期構建速度和程序清晰度。


不過,解決這種情況很容易。使用空白標識符讓未使用的東西在您開發時保留下來。


_, err := sql.Open("mysql", "root:Berlin2018@/jplatform")

但是由于您想要通過創建連接來創建數據庫實例。我建議通過從函數返回來使用它,或者您可以通過將 ping 發送到數據庫服務器來檢查連接是否正常工作:


var DB *sql.DB


func Connect() {

    DB, err := sql.Open("mysql", "root:Berlin2018@/jplatform")

    if err = DB.Ping(); err != nil {

        log.Panic(err)

    }

}

或者您可以創建一個結構,您可以在任何地方使用它,包括為每個需要 db 連接來查詢數據庫的函數使用方法接收器


type Env struct {

    db *sql.DB

}


func Connect() {

    db, err := sql.Open("mysql", "root:Berlin2018@/jplatform")

    _ = &Env{db: db}

}


func(env *Env) getDataFromDatabase(){}


查看完整回答
反對 回復 2023-03-21
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

您沒有DB在以下位置使用變量db.go:


package db


import (

  "database/sql"

)


var DB *sql.DB


func Connect() {

  con, err := sql.Open("mysql", "root:Berlin2018@/jplatform")

  if err != nil {

    panic(err.Error())

  }

  DB = con

}


func Close() {

  DB.Close()

}


查看完整回答
反對 回復 2023-03-21
  • 2 回答
  • 0 關注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號