我想弄清楚為什么會這樣。我有一個項(xiàng)目結(jié)構(gòu)type item struct { name string someOtherValue int }和另一個結(jié)構(gòu)type someStruct struct { items []item}我有一個函數(shù),我想在其中循環(huán)并更新值。func (s someStruct) update() { for i := range s.items { item := &s.items[i] if item.name == “Something” { doSomething(item) } }}當(dāng)我將項(xiàng)目傳遞給 doSomething 函數(shù)時,它將更新該地址的項(xiàng)目(按計(jì)劃工作)。我的問題是,如果 item 應(yīng)該是地址,為什么 item.name 會起作用?
1 回答

函數(shù)式編程
TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個贊
因?yàn)?Golang 已經(jīng)自動解引用了指針。
item.name
轉(zhuǎn)換為(*item).name
與選擇器一樣,使用指針對具有值接收器的非接口方法的引用將自動解除對該指針的引用:pt.Mv 等同于 (*pt).Mv。
- 1 回答
- 0 關(guān)注
- 141 瀏覽
添加回答
舉報
0/150
提交
取消