登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-03-16 20:45:21 313浏览 收藏

在代码中,开发者试图将 `db` 变量分配给外部作用域,但错误地将其声明为局部变量。该问题可以通过在 `func` 中将 `db` 声明为 `var` 变量并使用 `=` 赋值运算符来解决,而不是使用 `:=` 赋值运算符。通过这种方式,`db` 将被分配给外部作用域,而不是在 `func` 中重新声明。

问题内容

我有这段代码。问题出在 func 中,我试图分配给外部作用域中的 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
}

今天关于《将本地结果分配给外部范围》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>