為什么結果是 A:&{[{[{1}]}]}A:&{[{[{2}]}]}A:&{[{[{2}]}]}不是: A:&{[{[{1}]}]}A:&{[{[{2}]}]}A:&{[{[{3}]}]}我們不能在范圍內使用指針?這是代碼,我設置了一個指針,指向范圍循環,但它失敗了。package mainimport( "fmt")type A struct{ Barry []B}func (this *A)init(){ b:=&B{} b.init() this.Barry=[]B{*b} return }type B struct{ Carry []C}func (this *B)init(){ c:=&C{} c.init() this.Carry=[]C{*c} return }type C struct{ state string}func (this *C)init(){ this.state="1" return }func main(){ a:=&A{} a.init() fmt.Printf("A:%v\n",a) p:=&a.Barry[0].Carry[0] p.state="2" fmt.Printf("A:%v\n",a) for _,v:=range a.Barry[0].Carry{ if v.state=="2"{ p=&v } } p.state="3" fmt.Printf("A:%v\n",a)}
1 回答

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
變量p設置為指向v,而不是切片元素。此代碼設置p為指向切片元素:
for i, v := range a.Barry[0].Carry {
if v.state == "2" {
p = &a.Barry[0].Carry[i]
}
}
- 1 回答
- 0 關注
- 183 瀏覽
添加回答
舉報
0/150
提交
取消