据说 Map 是Go中的引用类型,因此当从函数返回它们时,您不需要作为指向 Map 的指针传递,以便更改在函数体外部可见 . 但是如果从非指针结构上的方法返回所述映射呢?
例如:
type ExampleMapHolder struct {
theUnexportedMap map[string]int
}
func (emp ExampleMapHolder) TheMap() map[string]int {
return emp.theUnexportedMap
}
如果我调用 TheMap()
,然后修改其中的值,即使接收器不是指针,这个更改是否会在其他地方可见?我想它会返回一个属于ExampleMapHolder副本的 Map 的引用,但是无法在文档中找到明确的答案 .
1 回答
你为什么不检查它?
游乐场:http://play.golang.org/p/jGZqFr97_y