map

2022-03-12 GoLang 大约 2 分钟

映射(map),Go语言中内置的一种类型,它将键值对相关联,我们可以通过Key来获取对应的值value,类似其它语言的集合

# 基本语法

var 变量名称 map[keytype]valuetype
1

map的特点:

  1. map集合在使用前一定要make。
  2. map的key-value是无序的。

相关信息

  1. key,value的类型:bool、数字、string、指针、channel、还可以是只包含前面几个类型的接口、结构体、数组。
  2. key通常为Int、string类型、value通常为数字(整型、浮点数)、string、map、结构体
  3. key: slice、map、function不可以,如果重复,后一个的value会替换前一个value。
  4. make函数的第二个参数size可以省略,默认就分配一个内存。
func main() {
	// 定义map变量
	var a map[int]string
	// 只声明map内存是没有分配空间
	// 必须通过make函数进行初始化,才会分配空间
	a = make(map[int]string, 10) // mao可以存放10个键值对
	// 将键值对存入 map中;
	a[2022] = "001"
	a[2023] = "2023"
	fmt.Println(a) // map[2022:001 2023:2023]
}
1
2
3
4
5
6
7
8
9
10
11

# 创建方式

func main() {
    // 方式一
    var a map[int]string
	a = make(map[int]string, 10)
    
    // 方式二
	b := make(map[int]string)
	b[123] = "123"
	b[234] = "234"
	fmt.Println(b) // map[123:123 234:234]

    // 方式三
	c := map[int]string{
		123: "123",
		234: "234",
	}
	fmt.Println(c) // map[123:123 234:234]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# map操作

# 新增/更新

func main() {
	b := make(map[int]string)
	b[222] = "222"
	b[222] = "333"
	fmt.Println(b) // map[222:333]
}
1
2
3
4
5
6

如果key还没有就是增加,如果key存在就是修改。

# 删除

func main() {
	b := make(map[int]string)
	b[111] = "222"
	b[222] = "333"
	fmt.Println(b) // map[111:222 222:333]
	delete(b, 222)
	fmt.Println(b) // map[111:222]
}
1
2
3
4
5
6
7
8

delete是一个内置函数,如果key存在就删除key-value,如果key不存在,不做操作,但是也不会报错。

# 清空

  1. 目前还没有一个专门的一个方法,用来删除所有的key,你可以选额遍历然后逐个删除。
  2. 可以重新创建一个新的map。

# 查找

func main() {
	b := make(map[int]string)
	b[111] = "222"
	b[222] = "333"
	value, bool := b[222]
	fmt.Println(value, bool) // 333 true
}
1
2
3
4
5
6
7

value为返回的value,bool为是否返回。

# 获取长度

func main() {
	b := make(map[int]string)
	b[111] = "222"
	b[222] = "333"
	fmt.Println(len(b)) // 2
}
1
2
3
4
5
6

# 遍历

func main() {
	b := make(map[int]string)
	b[111] = "222"
	b[222] = "333"
	for key, value := range b {
		fmt.Println(key, value)
	}
}
// 打印结果
111 222
222 333
1
2
3
4
5
6
7
8
9
10
11

注意

map只能使用for range遍历。

上次编辑于: 2023年7月4日 09:36