Go map类型
//is_nil2:=map[string]int 不能直接这么定义空的map
func map3() { //is_nil2:=map[string]int 不能直接这么定义空的map name_to_ago:=make(map[string]int,8) //需要使用make()函数来分配内存 fmt.Println(name_to_ago) name_to_ago2:=map[string]int{ "小明":19, "老王":33, } fmt.Println(name_to_ago2) //map[小明:19 老王:33] //map 初始值为nil类型 map[KeyType]ValueType is_nil:=make(map[string]int,8) fmt.Println(is_nil==nil) val,ok:=name_to_ago2["小明"] //有的话值 int 和 True fmt.Println(val,ok) //19 true val2,ok2:=name_to_ago2["老明"] //没有的话返回 类型的null值(例如int的null为0 ) 和 false fmt.Println(val2,ok2) //0 false //map的遍历 for k, v := range name_to_ago2 { fmt.Println(k, v) } //delete(map, key) delete(name_to_ago2,"小明") fmt.Println(name_to_ago2)//删了 小明 //取出map中的所有key存入切片keys //元素为map类型的切片 var mapSlice = make([]map[string]string, 3) for index, value := range mapSlice { fmt.Printf("index:%d value:%v\n", index, value) } fmt.Println("after init") // 对切片中的map元素进行初始化 mapSlice[0] = make(map[string]string, 10) mapSlice[0]["name"] = "小王子" mapSlice[0]["password"] = "123456" mapSlice[0]["address"] = "沙河" for index, value := range mapSlice { fmt.Printf("index:%d value:%v\n", index, value) } //值为切片类型的map var sliceMap = make(map[string][]string, 3) fmt.Println(sliceMap) fmt.Println("after init") key := "中国" value, ok := sliceMap[key] if !ok { value = make([]string, 0, 2) } value = append(value, "北京", "上海") sliceMap[key] = value fmt.Println(sliceMap) }