2016-11-18 128 views
17

地图是否通过Go中的值或引用传递?在Go中,地图是通过价值还是参照传递的?

它总是可以定义一个函数如下,但这是一个矫枉过正的?

func foo(dat *map[string]interface{}) {...} 

返回值相同的问题。我应该返回一个指向地图的指针,还是将该地图作为值返回?

意图当然是为了避免不必要的数据复制。

+3

HTTPS:/ /blog.golang.org/go-maps-in-action:地图类型是引用类型,如指针或切片,因此上面的m值为零;它没有指向一个初始化的地图。在读取时,零映射表现为空映射,但尝试写入零映射会导致运行时恐慌;不要这样做。要初始化地图,请使用内置的make函数 –

+1

Go中的_Everything_按值传递。有些值碰巧是指针或包含指针的结构。 (在某些情况下,您可能需要'* map',如果您需要在地址处重新分配地图值) – JimB

回答

相关问题