Avatar ·

Como verificar se um map contém uma chave em Go?

Olá a todos! Comecei a estudar Go recentemente e tive um problema com mapas (map). Suponha que eu crie um mapa armazenando usuários por seus IDs: ```go users := map[int]string{ 1: "Alice", 2: "Bob", } ``` Preciso verificar se um usuário com ID, por exemplo, 3, existe. Tentei fazer assim: ```go if users[3] != "" { fmt.Println("User found") } else { fmt.Println("User not found") } ``` Mas isso parece errado, porque se o valor for vazio (por exemplo, se o usuário tiver um nome vazio), a verificação falhará. Além disso, ouvi dizer que em Go, ao acessar uma chave inexistente, é retornado o valor zero (zero value) para o tipo do valor. Para strings é uma string vazia, para números é 0, para booleanos é false. Mas como então distinguir a ausência de uma chave de um valor zero real? Existe alguma maneira idiomática de verificar se uma chave existe em um map? Li que em outras linguagens (como Python) existe o operador `in`, mas não encontrei algo assim em Go.