一尘不染

创建带有/不带有make的地图

go

两者之间到底有什么区别

var m = map[string]int{}

var m = make(map[string]int)

第一个只是加快字段初始化速度的捷径吗?有性能方面的考虑吗?


阅读 239

收藏
2020-07-02

共1个答案

一尘不染

第二种形式总是创建一个空的地图。

第一种形式是地图文字的特殊情况。地图文字允许创建 非空 地图:

m := map[bool]string{false: "FALSE", true: "TRUE"}

现在,您的(通用)示例:

m := map[T]U{}

是没有初始值(键/值对)的地图文字。它完全等同于:

m := make(map[T]U)

此外,make这是为地图指定初始容量(大于初始分配的元素数量)的唯一方法。例:

m := make(map[T]U, 50)

将创建一个地图,该地图具有足够的空间来容纳50个项目。如果您知道地图会增长,这对于减少将来的分配很有用。

2020-07-02