对nil的map取值

题目:

下面这段代码输出什么?

1
2
3
4
5
6
7
8
9
type person struct {  
name string
}

func main() {
var m map[person]int
p := person{"mike"}
fmt.Println(m[p])
}
  • A.0
  • B.1
  • C.Compilation error

解析:

这段代码会输出一个零值,即 0

原因是在代码中定义了一个 map[person]int 类型的变量 m,但是没有对其进行初始化。在没有进行初始化操作时,map 的零值为 nil,也就是一个空的 map

在打印语句中,尝试通过 m[p] 获取 map 中键为 p 的值。由于 m 是一个空的 map,并没有键为 p 的项,因此返回其值类型的零值,即 0

因此,代码输出为 0


对nil的map取值
http://example.com/2023/06/08/Go每日一题/对nil的map取值/
作者
Feng Tao
发布于
2023年6月8日
更新于
2023年6月8日
许可协议