Avatar ·

如何检查 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)是有效值的情况。