Menu
CoddyTech

检查键是否存在

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 1

Go 提供了一个简化版本,可以这样写:

v, k := books ["a"]
fmt.Println(v, k)

这会返回值 v,以及布尔值 true(如果键存在)或 false(如果键不存在):

0 false

在这个例子中,映射里没有 a,所以返回 0 和 false。

challenge icon

挑战

简单

编写一个程序,将用户输入作为键,并检查给定的映射中是否存在这个键:

  • 如果存在,则打印消息 <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 在线编译器