func main(){
ages01 := map[string]int{
"alice":31,
"bob":13,
}
ages02 := make(map[string]int)
ages02["chris"] =20 // 通过==进行map赋值
ages02["paul"] = 30
//age01和age02两种初始化的方式等价
m1 := make(map[string]int)
m2 := map[string]int{}
//m1和m2创建方式等价,都是创建了一个空的的map,这个时候m1和m2没有任何元素
for name,age := range ages01{
fmt.Printf("%s\t%d\n",name,age) // bob 13, alice 31
}
for name,age := range ages02{
fmt.Printf("%s\t%d\n",name,age) // chris 20, paul 30
}
var null_map map[string]int //声明但未初始化map,此时是map的零值状态(只有一个nil元素)
empty_map := map[string]int{} //创建了初始化了一个空的的map,这个时候empty_map没有任何元素
fmt.Println(m1 != nil && m2 != nil) //true
fmt.Println(len(null_map)==0) // true
fmt.Println(null_map ==nil) //true,此时是map的零值状态(nil)
fmt.Println(len(empty_map)==0) // true
fmt.Println(empty_map ==nil) //false,空的的map不等价于nil(map的零值状态)
empty_map["test"] = 12 //执行正常,空的的map可以赋值设置元素
null_map["test"] = 12 //panic: assignment to entry in nil map,无法给未初始化的map赋值设置元素
}