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

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


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


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 的值。


月关宝盒
浏览 242回答 2
2回答

MM们

发生这种情况是因为可能PublicVar是指向实例的指针。所以temp也指向同一个实例。您可以通过以下方式获取值类型。temp := *PublicVar temp.name = "bob"在Playground中查看示例编辑:由于对问题进行了编辑以显示关注的变量是一个切片,因此 khrm 的答案更相关。

POPMUISE

按值复制。但是在地图和切片的情况下,有一个例外,即只有它们的引用被复制,因为它们被实现为引用类型。在切片的情况下,您可以使用内置副本执行此操作:b := make([]string, len(a))copy(b,a)如果是地图:for k, v := range a {    b[k] = v}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go