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

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

在 Golang 中創建全局變量是否有可能和良好的做法?

在 Golang 中創建全局變量是否有可能和良好的做法?

Go
互換的青春 2022-08-24 18:40:24
因此,我正在創建一個 CLI 應用程序,某些命令需要訪問數據庫。現在他們最終都擁有了以下代碼:        db, err := gorm.Open(sqlite.Open(fmt.Sprintf("%s/db/db.sqlite", dir)), &gorm.Config{})        if err != nil {            panic("failed to connect database")        }這打破了DRY的原則(不要重復自己)。有沒有辦法避免這種情況?
查看完整描述

1 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

我認為這大致是@Flimzy在談論依賴注入時所想到的(如果我錯了,請告訴我!


此處提供了整個自包含的示例。該結構具有指向其中的數據庫的指針。結構上的任何方法都可以訪問此打開的數據庫。Commands


type Commands struct {

    db *gorm.DB

}


// An example command

func (c Commands) FindByUUID() (m []MyModel, err error) {

    // The commands now have access to the database

    c.db.Find(&m, "tag = ?", "foobar")

    return m, c.db.Error

}

或者將其作為顯式參數傳遞:


func FindByUUID(db *gorm.DB) (m []MyModel, err error) {

    db.Find(&m, "tag = ?", "foobar")

    return m, db.Error

}


查看完整回答
反對 回復 2022-08-24
  • 1 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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