1、忽視在range迴圈中元素被複制的事實
修改結構體切片中的元素
錯誤的修改方式
package tests import ( "fmt" "testing" ) type Account struct { Balance int } func TestT1(t *testing.T) { accounts := []Account{ {Balance: 10}, {Balance: 20}, {Balance: 30}, } // 1、這樣做不會修改 for _, a := range accounts { // 只改變了臨時變數a,並沒有改變切片中的元素 a.Balance += 100 } fmt.Println("accounts: ", accounts) // accounts: [{10} {20} {30}] }
正確的修改方式1:使用切片的索引訪問元素
1231
23
123
參考
注意一下,個人建議還是買紙質版的書,下面的部落格裡面因為是機翻的,所以不可避免會有一些看起來很難理解的地方~
https://gomis100.flygon.net/#/docs/03