对于空的 maps,请使用make(..)初始化,并且以编程的方式填充的。这使得map的初始化在表现上不同于声明,并且可以方便地在以后添加容量大小提示(如果有的话)。
Bad
var (
// m1 可以安全的读写
// m2 在写时会panic
m1 = map[T1]T2{}
m2 map[T1]T2
)
//声明和初始化看起来非常相似
Good
var (
// m1 可以安全的读写
// m2 写时会panic
m1 = make(map[T1]T2)
m2 map[T1]T2
)
// 声明和初始化看起来是不同的
在尽可能的情况下,在使用make()初始化 map时,提供容量提示。请查阅Specifying Map Capacity Hints 获取更多信息。
另一方面,如果map包含一个固定的元素列表,则使用map字面量初始化该map。
Bad
m := make(map[T1]T2, 3)
m[k1] = v1
m[k2] = v2
m[k3] = v3
Good
m := map[T1]T2{
k1: v1,
k2: v2,
k3: v3,
}
基本的经验法则是:在初始化时,添加一组固定的元素时,请使用map字面量,否则使用make(并尽可能指定容量)。