第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

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

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

Go
萬千封印 2023-03-21 15:44:12
我有兩個包,main和db. 但是,我收到"DB declared and not used"錯誤。數(shù)據(jù)庫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條經(jīng)驗 獲得超8個贊

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

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


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


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

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


var DB *sql.DB


func Connect() {

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

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

        log.Panic(err)

    }

}

或者您可以創(chuàng)建一個結(jié)構(gòu),您可以在任何地方使用它,包括為每個需要 db 連接來查詢數(shù)據(jù)庫的函數(shù)使用方法接收器


type Env struct {

    db *sql.DB

}


func Connect() {

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

    _ = &Env{db: db}

}


func(env *Env) getDataFromDatabase(){}


查看完整回答
反對 回復(fù) 2023-03-21
?
PIPIONE

TA貢獻1829條經(jīng)驗 獲得超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()

}


查看完整回答
反對 回復(fù) 2023-03-21
  • 2 回答
  • 0 關(guān)注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號