如何复制一个公共变量使用go?

时间:2016-06-01 04:57:27

标签: go

如何复制公共变量使用go?

例如,名为PublicVar的公共变量

readUTF()

PublicVar的名称将被更改,但这不是我想要的。

我只想复制PublicVar的值。

2 个答案:

答案 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
}