其他分享
首页 > 其他分享> > Go语言学习笔记——字典(五)

Go语言学习笔记——字典(五)

作者:互联网

Map 是一种基于key-value的无序的键值对的集合。

声明

使用map关键字定义:

var map变量名 map[键的数据类型]值的数据类型

使用内建函数make()定义:

make(map[键的数据类型]值的数据类型, [cap])

初始化

先声明,后初始化

ageMap := make(map[string]int)
ageMap["小白"] = 21
ageMap["大白"] = 23
ageMap["小兔"] = 17

map[大白:23 小兔:17 小白:21]

声明时初始化

ageMap := map[string]int{
    "小白":21,
    "大白": 23,
    "小兔" : 17,
}

判断某个键是否存在

// 如果key存在ok为true,v为对应的值;不存在ok为false,v为值类型的零值
v, exist := ageMap["小兔"]
if exist {
	fmt.Println(v)
} else {
	fmt.Println("查无此人")
}

遍历

Map时for range来遍历。

遍历Map

for k, v := range ageMap {
	fmt.Println(k, v)
}

只遍历key

for k := range ageMap {
    fmt.Println(k)
}

只遍历value

for _, v := range ageMap {
	fmt.Println(v)
}

删除键

使用delete()内建函数从Map中删除一组键值对:

delete(map, key)
ageMap := map[string]int{
    "小白": 21,
    "大白": 23,
    "小兔": 17,
}
delete(ageMap, "大白")

返回Map键值对的数量

len(ageMap)

修改

普通的修改直接赋值即可

ageMap := map[string]int{
    "小白": 21,
    "大白": 23,
    "小兔": 17,
}
ageMap["小兔"] = 20

修改map内某个元素的值时必须整体重新赋值

type user struct {
    name string
    age  int
}

ma := make(map[string]user)
user1 := user{
    name: "李梓涵",
    age:  20,
}
ma["一班班长"] = user1

// 错误写法
//ma["一班班长"].age = 21

// 正确写法
user1.age = 21
ma["一班班长"] = user1

排序

map是无需的,如果想对map进行排序,需要进行以下三步:

  1. 遍历map,将map的key值存入一个切片
  2. 对切片进行排序
  3. 遍历切片,输出对应的map的值
// 新建一个map
var map1 = make(map[int]int, 10)
map1[10] = 100
map1[1] = 13
map1[8] = 90
map1[4] = 56

// 新建一个切片
var keys []int
// 循环遍历map,将其键写入切片
for k, _ := range map1 {
	keys = append(keys, k)
}

// 对键进行排序
sort.Ints(keys)

// 使用切片排出的键的顺序对map进行遍历输出
for _, k := range keys {
	fmt.Printf("map1[%v]=%v\n", k, map1[k])
}

参考资料:https://blog.csdn.net/zheyuan_xing/article/details/99362164

标签:map,遍历,Map,int,笔记,map1,Go,字典,ageMap
来源: https://blog.csdn.net/qq_29537269/article/details/119480926