如何在Go中优雅且正确地初始化map:make还是字面量?
大家好!我刚开始学习Go,遇到了一个看似简单的问题。如何正确初始化map(字典)?
我在代码中看到不同的方式,无法理解从Go社区的角度来看,哪种被认为是“正确”或“优雅”的。
例如,我可以这样声明map:
var m map[string]int
但如果我在声明后立即尝试写入值:
m["key"] = 10 // panic: assignment to entry in nil map
就会发生panic!原来map需要初始化。
我知道两种方法:
1. 通过make函数:
m := make(map[string]int)
m["key"] = 10
2. 通过字面量(空或带数据):
m := map[string]int{}
m["key"] = 10
// 或者直接
m2 := map[string]int{"key": 10}
看起来两者都有效。但哪个更好?性能上有区别吗?什么时候该用一种方式,什么时候该用另一种?为什么在