问题遇到的现象和发生背景
go 多重循环中对结构体切片append 最后结果和预期不一致
问题相关代码,请勿粘贴截图
package main
import (
"fmt"
_ "github.com/mattn/go-oci8"
"strconv"
_ "test-app/internal/packed"
)
type A struct {
aa int
ab string
cc []B
}
type B struct {
ba int
bb string
}
func main() {
var q1 []A
q2:=make([]A,0)
q1=[]A{{aa:1,ab:"1",cc:[]B{{ba: 1},{ba: 2},{ba: 3}}},{aa:2,ab:"2",cc:[]B{{ba: 1},{ba: 2},{ba: 3}}}}
number:=0
for _, q1v := range q1 {
x:=[]string{"11","22"}
for _, iv2 := range x {
ls:=q1v
for i, _ := range ls.cc {
number+=1
sj:=iv2 +"----"+strconv.Itoa(number)
ls.cc[i].bb=sj
}
fmt.Printf("加入临时值:%+v\n",ls)
q2=append(q2,ls)
}
}
for _, a := range q2 {
fmt.Printf("输出:%+v\n",a)
}
//fmt.Printf("s%+v",q2)
}
运行结果及报错内容
可以看出最后输出的和加入临时值的时候并不一样
我的解答思路和尝试过的方法
没找到解决方案
我想要达到的结果
最后输出的结果和 加入临时值一致