Avatar ·

Wie überprüft man, ob eine Map einen bestimmten Schlüssel in Go enthält?

Hallo zusammen! Ich habe gerade angefangen, Go zu lernen, und habe ein Problem mit der Überprüfung, ob ein Schlüssel in einer Map vorhanden ist. In Python bin ich es gewohnt, einfach `if key in dict:` zu schreiben, aber in Go gibt es diese Konstruktion nicht. Angenommen, ich habe eine Benutzer-Map: ```go users := map[int]string{ 1: "Alice", 2: "Bob", 3: "Charlie", } ``` Ich muss überprüfen, ob ein Benutzer mit ID = 4 existiert. Ich habe diesen Code ausprobiert: ```go if users[4] != "" { fmt.Println("User found!") } ``` Aber das funktioniert nicht, wenn der Wert des Schlüssels ein leerer String ist. Wenn ich zum Beispiel `4: ""` hinzufüge, kann mein Code nicht zwischen fehlendem Schlüssel und leerem Wert unterscheiden. Gleiches gilt für numerische Maps: Wenn der Wert 0 ist, funktioniert die Überprüfung ebenfalls nicht. Ich weiß, dass in Go beim Zugriff auf einen nicht existierenden Schlüssel der Nullwert des Typs zurückgegeben wird. Aber wie überprüft man dann richtig, ob ein Schlüssel in der Map vorhanden ist, ohne das Risiko eines falsch positiven oder falsch negativen Ergebnisses? Besonders interessiert mich der Fall, wenn der Nullwert (0, "", false) ein gültiger Wert ist.