对于这两个结构体
type A struct {
Number *int
}
type B struct {
Number int
}
Run Code Online (Sandbox Code Playgroud)
如果我想循环 B 的切片并将 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)
}
}
Run Code Online (Sandbox Code Playgroud)
我会发现所有aSlice a.Number都是相同的值和相同的指针。
for _, v := range aSlice {
fmt.Printf("aSlice Value %v Pointer %v\n", *v.Number,v.Number)
}
Run Code Online (Sandbox Code Playgroud)
将打印
aSlice Value 3 Pointer 0x10414020
aSlice Value 3
Pointer 0x10414020 aSlice Value …
go ×1