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)
}