golang開發筆記No 1

2021-09-27 11:42:57 字數 631 閱讀 2302

問題:下面這段**輸出

func main() 

m := make(map[int]*int)

for key,val := range slice

for k,v := range m

}//結果

0 -> 3

1 -> 3

2 -> 3

3 -> 3

參考解析:這是新手常會犯的錯誤寫法,for range 迴圈的時候會建立每個元素的副本,而不是元素的引用,所以 m[key] = &val 取的都是變數 val 的位址,所以最後 map 中的所有元素的值都是變數 val 的位址,因為最後 val 被賦值為3,所有輸出都是3

正確寫法:

func main() 

m := make(map[int]*int)

for key,val := range slice

for k,v := range m

}//結果

0 -> 0

1 -> 1

2 -> 2

3 -> 3

golang開發筆記No 5

下面這段 能否編譯通過?如果可以,輸出什麼?package main import fmt const x iota y z zz k p iota func main 結果 0 2 zz zz 5 解析 iota是golang語言的常量計數器,只能在常量的表示式中使用。iota在const關鍵字出...

golang開發筆記No 6

關於channel,下面語法正確的是 下面這段 輸出什麼?package main import fmt type person struct func main fmt.println m p 參 及解析 0,列印乙個 map 中不存在的值時,返回元素型別的零值。這個例子中,m 的型別是 map ...

qt開發筆記1

qmainwindow繼承與qwidget 當qwidget 類中介面發生變化 例如 最大 小化 時,觸發showevent 函式。類似函式還有changeevent keypressevent paintevent resizeevent 等等。qeventloop類 在任何時候,你都可以建立乙個...