gpt4 book ai didi

go - 从范围生成的值具有相同的指针值

转载 作者:IT王子 更新时间:2023-10-29 02:27:04 26 4
gpt4 key购买 nike

<分区>

对于这两个结构

type A struct {
Number *int
}

type B struct {
Number int
}

如果我想循环 B 的 slice 并将 B.Number 的值分配给新的 A.Number

func main() {
aSlice := []A{}
bSlice := []B{B{1}, B{2}, B{3}}
for _, v := range bSlice {
a := A{}
a.Number = &v.Number
aSlice = append(aSlice, a)
}
}

我会发现所有的aSlice a.Number都是相同的值和相同的指针。

for _, v := range aSlice {
fmt.Printf("aSlice Value %v Pointer %v\n", *v.Number,v.Number)
}

将打印
aSlice 值 3 指针 0x10414020
aSlice 值 3 指针 0x10414020
aSlice 值 3 指针 0x10414020

那么range在for循环中是否只更新_,v的值而不改变指针?

完整代码:https://play.golang.org/p/2wopH9HOjwj

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