如何复制公共变量使用go?
例如,名为PublicVar的公共变量
readUTF()
PublicVar的名称将被更改,但这不是我想要的。
我只想复制PublicVar的值。
答案 0 :(得分:3)
这是因为PublicVar
可能是指向实例的指针。所以temp
也指向同一个实例。您可以通过以下方式获取值类型。
temp := *PublicVar
temp.name = "bob"
请参阅Playground
上的示例修改:由于编辑问题以显示关注的变量是切片,因此khrm answer更具相关性。
答案 1 :(得分:1)
按值复制。但是在地图和切片的情况下,有一个例外,因为只有它们的引用被复制,因为它们被实现为引用类型。
如果是切片,您可以使用内置副本执行此操作:
b := make([]string, len(a))
copy(b,a)
如果是地图:
for k, v := range a {
b[k] = v
}