如何检查 map 是否包含特定键在 Go 中?
大家好!我刚开始学习 Go,在检查 map 中是否存在键时遇到了问题。在 Python 中,我习惯直接写 `if key in dict:`,但 Go 中没有这种结构。
假设我有一个用户 map:
```go
users := map[int]string{
1: "Alice",
2: "Bob",
3: "Charlie",
}
```
我需要检查 ID = 4 的用户是否存在。我尝试了这样的代码:
```go
if users[4] != "" {
fmt.Println("User found!")
}
```
但如果键的值是空字符串,这就不起作用。例如,如果我添加 `4: ""`,我的代码无法区分键不存在和值为空的情况。对于数值 map 也是如此:如果值是 0,检查也会失效。
我知道在 Go 中访问不存在的键会返回该类型的零值。但如何正确检查 map 中是否存在键,而不会冒误报或漏报的风险?特别是当零值(0、""、false)是有效值的情况。