44

到底有什么区别

var m = map[string]int{}

var m = make(map[string]int)

第一个只是更快的字段初始化的捷径吗?是否有性能考虑?

4

1 回答 1

55

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

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

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 个项目的地图。如果您知道地图会增长,这对于减少未来的分配很有用。

于 2013-06-06T10:43:36.243 回答