版权声明:不自见故明;不自是故彰;不自伐故有功;不自矜故长; https://blog.csdn.net/LightUpHeaven/article/details/82454016
type B struct {
s string
}
type A struct{
a1 int
m map[int]B
}
var m map[int]A
func main() {
a, ok := m[1]
log.Debug("", a, ok)
log.Debug("", a.a1, ok)
}
2018/09/06 09:18:33 [debug ] %!(EXTRA main.A={0 map[]}, bool=false)
2018/09/06 09:18:33 [debug ] %!(EXTRA int=0, bool=false)
Process finished with exit code 0
通过打印可以看到,虽然没有在m中插入任何元素,可是调用m[1]返回的value a,a.a1仍然不会报错,是a1类型对应的0值。
但返回的ok值为false。不同于value是指针类型的map,可以通过是否为nil来判断是否包含该元素,value为结构体的只能通过第二个返回值是否wz true来判断。