gpt4 book ai didi

pointers - 范围内的 golang 指针不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 03:41:23 24 4
gpt4 key购买 nike

为什么结果是 A:&{[{[{1}]}]}A:&{[{[{2}]}]}A:&{[{[{2 }]}]}

不是:A:&{[{[{1}]}]}A:&{[{[{2}]}]}A:&{[{[{3}] }]}

我们不能在范围内使用指针?这是代码,我设置了一个指针,指向范围循环,但它失败了。

package main

import(
"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)
}

最佳答案

变量 p 被设置为指向 v,而不是 slice 元素。此代码将 p 设置为指向 slice 元素:

for i, v := range a.Barry[0].Carry {
if v.state == "2" {
p = &a.Barry[0].Carry[i]
}
}

playground example

关于pointers - 范围内的 golang 指针不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35306669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com