首页 > 解决方案 > make(map) 和 map{} 之间的区别

问题描述

只是想知道两者之间有什么区别:

z := make(map[*test] string)

z := map[*test] string{}

我是在想象事情还是它们都无效?

标签: go

解决方案


Go 编程语言规范

制作切片、地图和通道

内置函数 make 采用类型 T,它必须是切片、映射或通道类型,可选地后跟特定类型的表达式列表。它返回一个 T 类型的值(不是 *T)。内存按照初始值部分中的说明进行初始化。

Call         Type T  Result
make(T)      map     map of type T
make(T, n)   map     map of type T with initial space for approximately n elements

复合文字

复合文字为结构、数组、切片和映射构造值,并在每次评估它们时创建一个新值。它们由字面量的类型和后跟大括号绑定的元素列表组成。每个元素可以可选地在一个相应的键之前。

map[string]int{}
map[string]int{"one": 1}

make是规范形式。复合文字是一种方便的替代形式。

z := make(map[int]string)

z := map[int]string{}

是等价的。


推荐阅读