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赋值设置元素

}