为了账号安全,请及时绑定邮箱和手机立即绑定

范围内的golang指针不起作用

范围内的golang指针不起作用

Go
牛魔王的故事 2021-12-07 19:43:36
为什么结果是 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]

    }

}


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信