map的定义

// 语法
map[keyType]ValueType

创建好map后需要初始化map,并且初始化容量防止运行过程中扩容

var m1 map[string]int
// 还没有初始化内存,
fmt.Println(m1 == nil)
// 要估算好map容量,避免程序运行过程中动态扩容
m1 = make(map[string]int, 10)
// 向map中的设置数据
m1["理想"] = 18
m1["小张"] = 21

fmt.Println(m1)  // map[小张:21 理想:18]

map循环

// map 遍历
for k, v := range m1 {
	fmt.Println("key:", k, "value:", v)
}

单独遍历key

// 只遍历key
for k := range m1 {
	fmt.Println("key:", k)
}

单独遍历value

// 只遍历value
for _, v := range m1 {
	fmt.Println("value:", v)
}

利用delete删除map中的元素

// 删除
delete(m1, "理想")
// 第一个参数是map 第二个参数是指定删除map中的哪个袁术

创建元素类型为mapSlice(切片)

// 第一种 元素类型为map的切片 
// 如果容量是0 需要利用append()函数追加
//var s1 = make([]map[int]string, 0, 10)
var s1 = make([]map[int]string, 10)
// 没有对内部进行初始化
s1[0] = make(map[int]string, 10)
// 需要同时对切片和map同时进行初始化
// 设置一个map的切片元素
s1[0][1] = "A"
fmt.Println(s1)

创建元素Slice(切片)map

var m2 = make(map[string][]int, 10)
m2["中国"] = []int{1, 2, 3}
fmt.Println(m2)