如何使用 go 复制一个公共变量?例如,一个名为 PublicVar 的公共变量a := []string{"A", "B"}b := afmt.Printf("%v\n", a)fmt.Printf("%v\n", b)b[0] = "C"fmt.Printf("%v\n", a)fmt.Printf("%v\n", b)// a has been changed.PublicVar 的名称将被更改,但这不是我想要的。我只想复制 PublicVar 的值。
2 回答
MM们
TA贡献1886条经验 获得超2个赞
发生这种情况是因为可能PublicVar
是指向实例的指针。所以temp
也指向同一个实例。您可以通过以下方式获取值类型。
temp := *PublicVar temp.name = "bob"
在Playground中查看示例
编辑:由于对问题进行了编辑以显示关注的变量是一个切片,因此 khrm 的答案更相关。
POPMUISE
TA贡献1765条经验 获得超5个赞
按值复制。但是在地图和切片的情况下,有一个例外,即只有它们的引用被复制,因为它们被实现为引用类型。
在切片的情况下,您可以使用内置副本执行此操作:
b := make([]string, len(a))
copy(b,a)
如果是地图:
for k, v := range a {
b[k] = v
}
- 2 回答
- 0 关注
- 241 浏览
添加回答
举报
0/150
提交
取消