📅  最后修改于: 2023-12-03 14:55:10.681000             🧑  作者: Mango
在Go语言中,映射(map)是一种内置类型,用于存储键值对。大多数编程语言都有映射(如Java中的HashMap,Python中的字典),但Go语言的映射略有不同。
Go语言中的映射类型使用map关键字声明:
map[KeyType]ValueType{}
其中 KeyType 可以是任何可比较类型(字符串、整数、浮点数、指针等),而 ValueType 可以是任何类型(包括结构体和其他映射类型)。
下面是一个简单的示例,演示如何声明和初始化映射:
package main
import "fmt"
func main() {
// 声明并初始化一个空的映射
emptyMap := make(map[string]int)
// 声明并初始化一个有两个键值对的映射
twoValueMap := map[string]int{
"apple": 1,
"banana": 2,
}
fmt.Println(emptyMap)
fmt.Println(twoValueMap)
}
上面的代码将输出:
map[]
map[apple:1 banana:2]
这里需要注意的是,我们使用make
函数来创建空的映射。在声明时,没有指定容量,因为映射的容量可以根据需要自动扩展。
接下来,让我们看一下如何向映射中添加新元素,以及如何访问现有元素:
package main
import "fmt"
func main() {
// 创建一个空的映射
scores := make(map[string]int)
// 添加新元素
scores["john"] = 90
scores["jane"] = 95
// 打印映射内容
fmt.Println(scores)
// 获取元素值
fmt.Println(scores["john"]) // 90
// 判断元素是否存在
score, ok := scores["jack"]
if ok {
fmt.Println(score)
} else {
fmt.Println("jack not found")
}
}
输出结果:
map[jane:95 john:90]
90
jack not found
我们使用scores["john"] = 90
添加了新元素,使用scores["john"]
获取现有元素的值。此外,我们可以使用ok
变量(布尔类型)来判断一个键是否存在于映射中。
Go语言提供了delete
函数来从映射中删除元素:
package main
import "fmt"
func main() {
// 创建一个有四个元素的映射
scores := map[string]int{
"john": 90,
"jane": 95,
"alice": 100,
"bob": 85,
}
// 删除元素
delete(scores, "bob")
// 打印映射内容
fmt.Println(scores)
}
输出结果:
map[alice:100 jane:95 john:90]
我们使用delete(scores, "bob")
删除了键为"bob"的元素。如果这个键不存在,delete
函数也不会报错。
我们可以使用for
循环遍历映射中的所有元素:
package main
import "fmt"
func main() {
// 创建一个有四个元素的映射
scores := map[string]int{
"john": 90,
"jane": 95,
"alice": 100,
"bob": 85,
}
// 遍历映射
for key, value := range scores {
fmt.Printf("%s -> %d\n", key, value)
}
}
输出结果:
bob -> 85
john -> 90
jane -> 95
alice -> 100
我们使用range
关键字来遍历映射。在每次循环中,key
变量包含当前键,value
变量包含当前值。
映射作为一种内置类型,广泛应用于Go语言开发中。以下是一些常见的应用场景:
在Go语言中使用映射是一个基本的工具,当你需要存储键值对时,使用map是很方便的选择。通过这篇文章,你已经了解了基本的映射操作,可以在你的代码中使用了。