Go 语言 Map(集合)学习笔记
简介
Map是一种以键值对为元素组成的无序集合,可以理解为字典或哈希表。在Go语言中,Map是一种内置数据类型,使用make函数创建,可以存储各种类型的数据。
创建Map
我们可以通过make函数来创建一个空Map:
goCopy Codem := make(map[keyType]valueType)
其中,keyType为键的类型,valueType为值的类型,比如:
goCopy Codeages := make(map[string]int)
表示创建了一个以string作为键,int作为值的Map。
我们也可以使用字面量的方式来创建Map:
goCopy Codeages := map[string]int{
"alice": 31,
"bob": 34,
"charlie": 28,
}
插入和访问元素
我们可以通过以下方式来向Map中插入元素:
goCopy Codeages["david"] = 30
这个语句表示向ages中插入一个键值对,键为"david",值为30。
我们可以通过以下方式来访问Map中的元素:
goCopy Codefmt.Println(ages["alice"])
这个语句表示输出ages中键为"alice"的元素的值。
注意:如果我们访问一个不存在的键,会返回该值类型的零值(例如,int类型的零值为0)。
删除元素
我们可以使用delete函数来删除Map中的元素:
goCopy Codedelete(ages, "alice")
这个语句表示删除ages中键为"alice"的元素。
遍历Map
我们可以使用for循环来遍历Map,例如:
goCopy Codefor name, age := range ages {
fmt.Printf("%s\t%d\n", name, age)
}
这个语句表示遍历ages,将键赋值给变量name,值赋值给变量age,然后输出name和age。注意:Map是无序的,每次迭代的顺序都可能不一样。
实例
下面是一个简单的例子,展示了如何使用Map统计字符串中每个单词的出现次数:
goCopy Codepackage 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 Codemap[over:1 the:2 jumps:1 quick:1 brown:1 dog:1 fox:1 lazy:1]
这个Map包含了每个单词以及它出现的次数。
总结
Map是一种非常方便的数据类型,可以用于存储各种类型的数据,并且提供了快速的访问和修改操作。在实际应用中,我们可以使用Map来解决很多问题,比如统计单词出现次数、缓存数据等。