📅  最后修改于: 2023-12-03 15:01:02.337000             🧑  作者: Mango
当在 Golang 中使用 map 时,有时需要检查 map 中是否存在某个键。这可以通过使用两个值的返回语法来实现。下面是一个简单的例子:
package main
import "fmt"
func main() {
myMap := make(map[string]int)
myMap["foo"] = 42
myMap["bar"] = 66
// Check if key exists
if val, ok := myMap["foo"]; ok {
fmt.Println(val)
} else {
fmt.Println("key not found")
}
if val, ok := myMap["baz"]; ok {
fmt.Println(val)
} else {
fmt.Println("key not found")
}
}
输出结果为:
42
key not found
在上面的代码中,我们首先创建一个 map,然后向其中添加两个键值对。接下来,我们使用 if
语句和两个值的返回语法检查 map 中是否存在键值对。如果存在,则打印值。否则,打印 "key not found"。
注意,我们在 if
语句中使用了短变量声明语法来声明 val
和 ok
变量。val
变量将存储 map 中与给定键对应的值,而 ok
变量将存储布尔值,指示是否存在该键。
上面的例子演示了如何检查单个键,但实际上,我们也可以使用循环来检查多个键。以下是一个示例程序:
package main
import "fmt"
func main() {
myMap := make(map[string]int)
myMap["foo"] = 42
myMap["bar"] = 66
keys := []string{"foo", "baz", "bar"}
for _, key := range keys {
if val, ok := myMap[key]; ok {
fmt.Printf("%s: %d\n", key, val)
} else {
fmt.Printf("%s: key not found\n", key)
}
}
}
输出结果为:
foo: 42
baz: key not found
bar: 66
在上面的代码中,我们定义了一个字符串切片,其中包含三个键。接下来,我们使用 for
循环遍历该切片,并在每次迭代中检查 map 中是否存在键。如果存在,则打印键值对,否则打印 "key not found"。
总之,通过使用两个值的返回语法,我们可以轻松检查 map 中是否存在单个或多个键。