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

例如,一个名为PublicVar的公共(public)变量

a := []string{"A", "B"}
b := a
fmt.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的值。

最佳答案

发生这种情况是因为PublicVar可能是实例的指针。因此,temp也指向同一实例。您可以通过以下方式获取值类型。

temp := *PublicVar
temp.name = "bob"

Playground上查看示例

编辑:由于已编辑问题以显示关注的变量是一个 slice ,所以khrm的answer更相关。

10-07 17:03