- map集合是一种无序的key-value的数据结构,在Go中的map是引用类型,必须初始化才能使用
- map是一种无序的键值对集合,可以通过key来快速的检索value,key类似索引,指向数据的值。
- 我们可以像数组和切片一样迭代map,但因为其是无需的,所以我们无法决定它的返回顺序
- 定义格式:map[KeyType]ValueType,KeyType:键类型,ValueType:值类型,map初始值为nil,需要使用make()函数来分配内存,make(map[KeyType]ValueType, [cap]),cap为容量,该参数非必传参数,但是我们应该在初始化map的时候就为其指定一个合适的容量
- map同样使用for,range进行遍历
- 使用delete()函数删除键值对,delete(map, key)
var map1 map[string]string
map1 = make(map[string]string)
map1["name"] = "mossil"
map1["sex"] = "man"
fmt.Println(map1)
for key, value := range map1 {
fmt.Printf("key : %v, value : %v \n", key, value)
}
user := map[string]string{
"name": "mossil",
"sex": "man",
}
fmt.Println(user)
for key, value := range user {
fmt.Printf("key : %v, value : %v \n", key, value)
}
val, err := user["name"]
if err {
fmt.Printf("err : %v, val : %v \n", err, val)
} else {
fmt.Printf("err : %v, val : %v \n", err, val)
}
delete(user, "sex")
fmt.Println(user)
var mapSlice = make([]map[string]string, 3)
for index, item := range mapSlice {
fmt.Printf("index : %v, item : %v \n", index, item)
}
mapSlice[0] = make(map[string]string)
mapSlice[0]["name"] = "张三"
mapSlice[0]["pass"] = "123456"
mapSlice[0]["addr"] = "火星"
fmt.Println(mapSlice)
var sliceMap = make(map[string][]string, 3)
fmt.Println(sliceMap)
key := "中国"
value, ok := sliceMap[key]
if !ok {
value = make([]string, 0, 2)
}
value = append(value, "北京", "上海")
sliceMap[key] = value
fmt.Println(sliceMap)