两者之间到底有什么区别
var m = map[string]int{}
和
var m = make(map[string]int)
第一个只是加快字段初始化速度的捷径吗?有性能方面的考虑吗?
第二种形式总是创建一个空的地图。
第一种形式是地图文字的特殊情况。地图文字允许创建 非空 地图:
m := map[bool]string{false: "FALSE", true: "TRUE"}
现在,您的(通用)示例:
m := map[T]U{}
是没有初始值(键/值对)的地图文字。它完全等同于:
m := make(map[T]U)
此外,make这是为地图指定初始容量(大于初始分配的元素数量)的唯一方法。例:
make
m := make(map[T]U, 50)
将创建一个地图,该地图具有足够的空间来容纳50个项目。如果您知道地图会增长,这对于减少将来的分配很有用。