为什么结果是 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 关注
- 156 浏览
添加回答
举报
0/150
提交
取消