Golang map取不存在的key时返回零值问题及解决
作者:chunheli
这篇文章主要介绍了Golang map取不存在的key时返回零值问题及解决过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
现象
由于python的字典取不存在的key时会报错,误以为golang也是一样的。
其实不然。
原因
golang的map取不存在的key时,并不会报错,而是会返回对应数据类型的零值,
例子如下:
package main
import "fmt"
func main() {
m := make(map[string]int)
v := m["不存在"] // v = 0 (int 的零值)
m2 := make(map[string]string)
v2 := m2["不存在"] // v2 = "" (string 的零值)
fmt.Printf("v: %v\n", v)
fmt.Printf("v2: %v\n", v2)
}
运行结果:

golang代码中常见的 value, ok := map[key] 这种写法,就是为了检测 key 是否存在。
这是比较容易犯错的地方,若在golang中取值时不对key是否存在进行判断,落库时拿到的数据格式可能与预期不符合,造成脏数据。
这点要好好注意下。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
