检查键是否存在
Coddy Go 中的切片和映射 课程的第 20 课,共 21 课。
到目前为止,我们已经学习了如何在映射中添加和删除值。本课将学习如何检查映射是否包含特定键。我们可以使用 if 条件来实现,如下面的示例所示:
var books = map[string]int{
"Golang": 1,
"Python": 2,
"Rust": 3,
}
if v, k := books["Python"]; k{
fmt.Println(v)
}在这个示例中,我们有一个名为 books 的映射。我们使用 if 检查映射是否包含键 "Python"。如果包含,就打印对应的值。在这个示例中,结果是 2。
<strong>books["Python"]; k{</strong> 中的 k 保存一个布尔值,可以是 true 或 false。如果键存在,它会返回 true。我们可以将它打印出来进行检查:
if v, k := books["Python"]; k{
fmt.Println(k,v)
}输出为:
true 1Go 提供了一个简化版本,可以这样写:
v, k := books ["a"]
fmt.Println(v, k)这会返回值 v,以及布尔值 true(如果键存在)或 false(如果键不存在):
0 false
在这个例子中,映射里没有 a,所以返回 0 和 false。
挑战
简单编写一个程序,将用户输入作为键,并检查给定的映射中是否存在这个键:
- 如果存在,则打印消息
<strong>"{key} exists with a value of {value}"</strong>。
{key} 是用户输入的键,{value} 是映射中对应的值。 - 如果不存在,则打印
<strong>"{key} does not exist in the map"</strong>。
亲手试试
package main
import "fmt"
func main() {
// 将用户输入作为键,不要修改这段代码!
var key string
fmt.Scanln(&key)
// 图书映射,不要修改这段代码!
books := map[string]int{
"Golang": 1,
"Python": 2,
"Rust": 3,
"Lua": 4,
"Java": 5,
}
// 检查映射中是否存在该键
}Go 中的切片和映射中的所有课
自己练习: Go 在线编译器