go - 将本地结果分配给外部范围

标签 go

我有这段代码。问题出在函数中,我试图在外部范围内分配给 db var,但它最终被声明为局部变量。

var db *sqlx.DB

func GetDatabaseConnection() *sqlx.DB {

    if db == nil {

        db, err := sqlx.Connect("postgres", "user=foo dbname=bar sslmode=disable")
        if err != nil {
            log.Fatalln(err)
        }

    }

    return db
}

我的问题是,关于这一行:

db, err := sqlx.Connect(...)

如何将 db 分配给外部作用域,而不是将其声明为局部变量?

最佳答案

var db *sqlx.DB

func GetDatabaseConnection() *sqlx.DB {

    if db == nil {
        var err error # ADD THIS LINE, AND DO = INSTEAD OF := ON NEXT LINE
        db, err = sqlx.Connect("postgres", "user=foo dbname=bar sslmode=disable")
        if err != nil {
            log.Fatalln(err)
        }

    }

    return db
}

关于go - 将本地结果分配给外部范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52941360/

相关文章:

go - 为什么GoLand调试每次都会重建?怎么解决呢?

algorithm - 如何用golang得到小数点后两位的长度?

go - 在未导出的字段上调用导出的方法

go - 如何在 go 中模拟函数?

Golang 查询字符串作为查询的一部分

go - 扫描精确的字符数

unit-testing - 如何模拟Viper config getter

sorting - 在不创建二级结构的情况下按时间日期字段在 go 1.2 中对结构 slice 进行排序

go - 使用 gorilla mux 指向域去服务器

parsing - 如何将分隔字符串解析为子字符串片段?