Go 全局变量和短变量定义

在下面的片段中


package ...


var Conn *sql.DB // outer Conn


func Init(user, pwd, dbname string, port int) {

    Conn, err := sql.Open("postgres", "... args") // inner Conn

    // ..

}

内部Conn是一个新变量,外部 Conn将保持为空。


通过显式定义err和替换短变量定义,它似乎正确地初始化了外部Conn变量


    var err error

    Conn, err = sql.Open("postgres", "... args") // inner Conn

有没有更简单的方法来指定内部Conn不应该真正是范围变量,而是全局Conn变量?我在想类似的东西package.Conn,但这在包本身内部是无效的。


猛跑小猪
浏览 230回答 2
2回答

holdtom

不,这没有简写。:=始终分配给当前(最内部)范围内的变量,必要时创建新变量。要分配给当前范围之外的任何变量,您必须使用=代替:=,并且在多重分配的情况下,这意味着必须预先声明所有变量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go