在下面的片段中package ...var Conn *sql.DB // outer Connfunc Init(user, pwd, dbname string, port int) { Conn, err := sql.Open("postgres", "... args") // inner Conn // ..}內(nèi)部Conn是一個(gè)新變量,外部 Conn將保持為空。通過(guò)顯式定義err和替換短變量定義,它似乎正確地初始化了外部Conn變量 var err error Conn, err = sql.Open("postgres", "... args") // inner Conn有沒(méi)有更簡(jiǎn)單的方法來(lái)指定內(nèi)部Conn不應(yīng)該真正是范圍變量,而是全局Conn變量?我在想類似的東西package.Conn,但這在包本身內(nèi)部是無(wú)效的。
2 回答

holdtom
TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
不,這沒(méi)有簡(jiǎn)寫(xiě)。:=
始終分配給當(dāng)前(最內(nèi)部)范圍內(nèi)的變量,必要時(shí)創(chuàng)建新變量。要分配給當(dāng)前范圍之外的任何變量,您必須使用=
代替:=
,并且在多重分配的情況下,這意味著必須預(yù)先聲明所有變量。
- 2 回答
- 0 關(guān)注
- 247 瀏覽
添加回答
舉報(bào)
0/150
提交
取消