map是一种引用类型。如果是包级别申明,那么格式为
var name map[key]value
这只是申明,赋值有两种格式。
一种是用make函数,参数就是map的类型:
var m1 = make(map[int]int)
或者可以使用直接赋值方式:
var m = map[int]int{}
比较推荐直接方式,因为可以直接初始化一些键值对进去,很方便。
函数内的简短语法也是一样的。
要注意,map如果只是申明了,那么就是nil的,是不能赋值的,会报panic:
panic: assignment to entry in nil map
但是其他的操作都可以。查找操作如果不存在会返回一个对应类型的零值。
那么如果我们需要判断特定的key是否存在怎么弄?
使用if的特殊语法,即带有一个初始化语句的if:
if v, ok := m[1]; ok {
fmt.Printf("%d", v)
} else {
fmt.Printf("no")
}