Go 语言 Map(集合)学习笔记

简介

Map是一种以键值对为元素组成的无序集合,可以理解为字典或哈希表。在Go语言中,Map是一种内置数据类型,使用make函数创建,可以存储各种类型的数据。

创建Map

我们可以通过make函数来创建一个空Map:

goCopy Code
m := make(map[keyType]valueType)

其中,keyType为键的类型,valueType为值的类型,比如:

goCopy Code
ages := make(map[string]int)

表示创建了一个以string作为键,int作为值的Map。

我们也可以使用字面量的方式来创建Map:

goCopy Code
ages := map[string]int{ "alice": 31, "bob": 34, "charlie": 28, }

插入和访问元素

我们可以通过以下方式来向Map中插入元素:

goCopy Code
ages["david"] = 30

这个语句表示向ages中插入一个键值对,键为"david",值为30。

我们可以通过以下方式来访问Map中的元素:

goCopy Code
fmt.Println(ages["alice"])

这个语句表示输出ages中键为"alice"的元素的值。

注意:如果我们访问一个不存在的键,会返回该值类型的零值(例如,int类型的零值为0)。

删除元素

我们可以使用delete函数来删除Map中的元素:

goCopy Code
delete(ages, "alice")

这个语句表示删除ages中键为"alice"的元素。

遍历Map

我们可以使用for循环来遍历Map,例如:

goCopy Code
for name, age := range ages { fmt.Printf("%s\t%d\n", name, age) }

这个语句表示遍历ages,将键赋值给变量name,值赋值给变量age,然后输出name和age。注意:Map是无序的,每次迭代的顺序都可能不一样。

实例

下面是一个简单的例子,展示了如何使用Map统计字符串中每个单词的出现次数:

goCopy Code
package main import ( "fmt" "strings" ) func main() { text := "the quick brown fox jumps over the lazy dog" words := strings.Fields(text) wordCount := make(map[string]int) for _, word := range words { wordCount[word]++ } fmt.Println(wordCount) }

这个程序的输出结果为:

Copy Code
map[over:1 the:2 jumps:1 quick:1 brown:1 dog:1 fox:1 lazy:1]

这个Map包含了每个单词以及它出现的次数。

总结

Map是一种非常方便的数据类型,可以用于存储各种类型的数据,并且提供了快速的访问和修改操作。在实际应用中,我们可以使用Map来解决很多问题,比如统计单词出现次数、缓存数据等。