Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Golang map取不存在的key时返回零值

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是否存在进行判断,落库时拿到的数据格式可能与预期不符合,造成脏数据。

这点要好好注意下。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文