key-value的数据结构,又叫字典或关联数组.
①. map的数据结构是引用类型,里面改了值,外面也会改.
①. 格式:
var mapName map[keyType]valueType
②. 声明后初始化:
var a map[string]string // 声明是不会分配内存的,初始化需要make.
a := make(map[string][string], 10) // 初始化make
a["name"] = "lily" // 不初始化,直接赋值会报错
a["name"] = "david" // 相同的key,后面会覆盖前面.map的key是唯一的
③. 声明并初始化:
var a map[string]string = map[string]string{
"name": "david",
}
③. 简写:
b := make(map[string][string], 10)
b["name"] = "david"
④.
var c map[string]map[string]string
⑤.
d := make(map[string]map[string]string, 10)
d["key1"] = make(map[string]string)
d["key1"]["key2"] = "david" // 直接使赋值会报错,里面的map没有初始化
val, ok := d["key3"] // 查找到就显示,否则创建
if ok {
fmt.Println(val)
} else {
d["key3"] = make(map[string]string)
d["key3"]["key4"] = "lily"
}
for k, v := range a { // 遍历,每次遍历的结果不一样,因为是key是无序的
for x, y := range a {
fmt.Println(x, y)
}
}
delete(d["key3"]) // 删除
len(d)
⑥. slice of map:
items := make([]map[int][int], 5)
for i := 0; i < 5; i++ {
if (items[i] == nil) { // 用nil判断slice或map没有初始化
items[i] = make(map[int][int])
}
}
map的key是无序的,每次遍历的结果不一样.
a := make(map[int]int, 10)
a[2] = 1;
a[1] = 11;
a[5] = 14;
// 1. 先获取所有key
var keys []int
for a, _ := range a {
keys = append(keys, a)
}
// 2. 把key进行排序
sort.Ints(keys)
// 3. 按照排序好的key,进行遍历
for _, val := range keys {
fmt.Println(val, a[val])
}
初始化另外一个map,把key、value互换即可.
```> key-value的数据结构,又叫字典或关联数组.
## 1. 概念:
①. map的数据结构是引用类型,里面改了值,外面也会改.
## 2. 操作:
```go
①. 格式:
var mapName map[keyType]valueType
②. 声明后初始化:
var a map[string]string // 声明是不会分配内存的,初始化需要make.
a := make(map[string][string], 10) // 初始化make
a["name"] = "lily" // 不初始化,直接赋值会报错
a["name"] = "david" // 相同的key,后面会覆盖前面.map的key是唯一的
③. 声明并初始化:
var a map[string]string = map[string]string{
"name": "david",
}
③. 简写:
b := make(map[string][string], 10)
b["name"] = "david"
④.
var c map[string]map[string]string
⑤.
d := make(map[string]map[string]string, 10)
d["key1"] = make(map[string]string)
d["key1"]["key2"] = "david" // 直接使赋值会报错,里面的map没有初始化
val, ok := d["key3"] // 查找到就显示,否则创建
if ok {
fmt.Println(val)
} else {
d["key3"] = make(map[string]string)
d["key3"]["key4"] = "lily"
}
for k, v := range a { // 遍历,每次遍历的结果不一样,因为是key是无序的
for x, y := range a {
fmt.Println(x, y)
}
}
delete(d["key3"]) // 删除
len(d)
⑥. slice of map:
items := make([]map[int][int], 5)
for i := 0; i < 5; i++ {
if (items[i] == nil) { // 用nil判断slice或map没有初始化
items[i] = make(map[int][int])
}
}
map的key是无序的,每次遍历的结果不一样.
a := make(map[int]int, 10)
a[2] = 1;
a[1] = 11;
a[5] = 14;
// 1. 先获取所有key
var keys []int
for a, _ := range a {
keys = append(keys, a)
}
// 2. 把key进行排序
sort.Ints(keys)
// 3. 按照排序好的key,进行遍历
for _, val := range keys {
fmt.Println(val, a[val])
}
初始化另外一个map,把key、value互换即可.