下面这段代码输出什么?
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
答 :A 0
m 是一个 map,值是 nil。从 nil map 中取值不会报错,而是返回相应的零值,这里值是 int 类型,因此返回 0。
注意 : nil map是可以取值,但是不能赋值。会导致程序panic的
package main
import "fmt"
type person struct {
name string
}
func main() {
var m map[person]int
p := person{"mike"}
m[p] = 2
fmt.Println(m[p])
}
运行结果:panic: assignment to entry in nil map