go从0到1项目实战体系七:map

key-value的数据结构,又叫字典或关联数组.

1. 概念:

①. map的数据结构是引用类型,里面改了值,外面也会改.

2. 操作:

. 格式:
   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])
     }     
   }

3. 排序:

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

4. Map反转:

初始化另外一个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])
     }     
   }

3. 排序:

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

4. Map反转:

初始化另外一个map,把key、value互换即可.

你可能感兴趣的:(golang,java,前端)