9、go的map

map引入

func main() {
	// 定义map
	var a map[int]string
	// 只声明map内存是没有分配空间的,必须通过make函数进行初始化
	a = make(map[int]string, 10) // 如果不指定大小,map会默认分配大小的
	a[1] = "张三"
	a[2] = "李四"
	a[3] = "王五"
	a[4] = "赵六"
	a[5] = "张三"
	a[2] = "王彪" // 会替换key为2的值,2-王彪

	fmt.Println(a) // map[1:张三 2:王彪 3:王五 4:赵六 5:张三]
}

map其他的创建方式

func main() {
	b := make(map[int]string)
	b[1] = "张三"
	b[2] = "李四"
	fmt.Println(b) // map[1:张三 2:李四]

	c := map[int]string{
		1: "张三",
		2: "李四",
	}
	c[3] = "王五"
	fmt.Println(c) // map[1:张三 2:李四 3:王五]
}

map操作

func main() {
	b := make(map[int]string)
	// 增加
	b[1] = "张三"
	b[2] = "李四"
	fmt.Println(b) // map[1:张三 2:李四]
	// 修改
	b[2] = "王五"
	fmt.Println(b) // map[1:张三 2:王五]

	// 删除,使用delete函数
	delete(b, 2)
	fmt.Println(b) // map[1:张三]
	// 删除不存在的key,也不会报错
	delete(b, 3)
	fmt.Println(b) // map[1:张三]

	// 查找,返回值,是否存在
	value, flag := b[1]
	fmt.Println(value) // 张三
	fmt.Println(flag)  // true

	value2, flag2 := b[3]
	fmt.Println(value2) // 空字符
	fmt.Println(flag2)  // false

	// 遍历map
	for k, v := range b {
		fmt.Printf("key:%v value:%v \n", k, v)
	}
	// 打印:
	// key:1 value:张三

	// 增加点难度
	a := make(map[string]map[int]string)
	// 给这个map赋值
	a["班级1"] = make(map[int]string, 3)
	a["班级1"][1] = "张三"
	a["班级1"][2] = "李四"
	a["班级1"][3] = "王五"

	a["班级2"] = make(map[int]string, 3)
	a["班级2"][11] = "赵六"
	a["班级2"][22] = "王彪"
	a["班级2"][33] = "汪汪"

	for k1, v1 := range a {
		fmt.Println(k1)
		for k2, v2 := range v1 {
			fmt.Printf("学生学号:%v, 学生姓名:%v \n", k2, v2)
		}
		fmt.Println()
	}
	// 打印:
	//班级2
	//学生学号:11, 学生姓名:赵六
	//学生学号:22, 学生姓名:王彪
	//学生学号:33, 学生姓名:汪汪
	//班级1
	//学生学号:1, 学生姓名:张三
	//学生学号:2, 学生姓名:李四
	//学生学号:3, 学生姓名:王五
}
posted @ 2022-11-25 15:59  aBiu--  阅读(13)  评论(0编辑  收藏  举报