map

映射关系容器,key-value的数据结构,引用类型,无序的,必须初始化才能使用。

01 定义

01 make函数声明

package main

import "fmt"

func main() {
  a := make(map[string]int, 10)
	fmt.Println(a)
}

注意:

​ 中括号中是key的数据类型,外边是value的数据类型,10可以省略,表示map的容量。但是一般情况下,设置合理的容量。

02 声明赋值

package main

import "fmt"

func main() {
	a := map[string]int{
		"lynn": 1,
		"mac": 2,
	}
	fmt.Println(a)
}

03 判断key存在

package main

import "fmt"

func main() {
	a := map[string]int{
		"lynn": 1,
		"mac": 2, // 逗号必须有
	}
	value, ok := a["lynn"]
	fmt.Println(value, ok)
}

注意:

​ ok的结果是布尔值,true和false

​ value是对应key的value

04 map的遍历

package main

import "fmt"

func main() {
	a := make(map[string]int, 3)
	a["lynn"] = 3
	a["mac"] = 4
	for key, value := range a{
		fmt.Println(key, value)
	}
}

注意:

​ 只有key时,key的值是map的key,要想只要value,把key用下划线_表示

05 删除某个键值对

delete(map, key)

package main

import "fmt"

func main() {
  a := make(map[string]int, 3)
	a["lynn"] = 3
	a["mac"] = 4
	delete(a, "mac")
	fmt.Println(a)
}

注意:

​ 如果key不存在,不做处理

06 元素为map的切片

切片的元素是map

package main

import "fmt"

func main() {
  // 直接声明赋值
  a := []map[string]int{
    {
      "age": 18
    },
  }, // 逗号必须有
  // make声明
  b := make([]map[string]int, 1)
  b[0] = make(map[string]int, 1)
  b[0]["age"] = 18
  fmt.Println(a, b)
}

07 value为切片的map

map的value是切片

package main

import "fmt"

func main() {
  // 直接声明赋值
  a := map[string][]string{
    "name": {
      "lynn", 
    },
  }
  fmt.Println(a)
  // make声明
  b := make(map[string][]string, 1)
  key := "name"
  value, ok := b[key]
  if ! ok{
    value = make([]string, 1)
  }
  value = append(value, "lynn")
  b["name"] = value
  fmt.Println(b)
}
posted @ 2020-09-22 11:06  tianzhh_lynn  阅读(45)  评论(0编辑  收藏  举报