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(){}

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()
}
- 2 回答
- 0 關注
- 162 瀏覽
添加回答
舉報