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

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

Go 初始化運算符,包作用域變量 - 困惑:

Go 初始化運算符,包作用域變量 - 困惑:

Go
楊__羊羊 2021-08-01 06:07:39
以下代碼正常工作 - 輸出: You chose Test 1package mainimport (    "fmt")type TNameMap map[int]stringvar nameMap TNameMapfunc init() {    nameMap = make(TNameMap)    nameMap[1] = "You chose Test 1"    nameMap[2] = "You chose Test 2"    nameMap[3] = "You chose Test 3"}func main() {    fmt.Println(nameMap[1])}如果我注釋掉init() ie 中 的第一行,運行//nameMap = make(TNameMap)時我會感到恐慌main(),因為nameMap從未初始化:panic: runtime error: assignment to entry in nil map但是- 如果init()我寫nameMap := make(TNameMap)而不是nameMap = make(TNameMap),我沒有恐慌,也沒有輸出 -main()只是運行并終止進程。我知道如果我使用 Initialization 運算符 - nameMap := make(TNameMap)我已經聲明了一個nameMap僅作用域為init()函數的新變量,因此只有包級別變量 var nameMap TNameMap在 范圍內main(),導致沒有輸出,因為包級別不var包含地圖數據。但是,我很困惑:為什么我panic在那種情況下沒有得到?如果 main()正在對包 var 進行調用,則它從未被初始化 - 那么為什么不panic呢?
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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