Existenz prüfen
Das comma-ok-Idiom
Existenz prüfen ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Nicht vorhandene Schlüssel geben den Nullwert zurück
Wenn Sie einen nicht vorhandenen Schlüssel lesen, gibt Go den Nullwert des Wertetyps zurück, keinen Fehler. Bei int ist das 0, bei string der leere String.
package main
import "fmt"
func main() {
m := map[string]int{"a": 5}
fmt.Println(m["missing"])
}Das Mehrdeutigkeitsproblem
Wenn der Wert 0 zurückgegeben wird, woher wissen Sie, ob der Schlüssel mit dem Wert 0 vorhanden ist oder einfach fehlt? Anhand des Werts allein können Sie das nicht feststellen.
Das Komma-ok-Idiom
Ein Map-Zugriff kann zwei Werte zurückgeben: den Wert und einen booleschen Wert. Der boolesche Wert ist true, wenn der Schlüssel vorhanden ist. Dies ist das Komma-ok-Idiom.
package main
import "fmt"
func main() {
m := map[string]int{"a": 0}
val, ok := m["a"]
fmt.Println(val, ok)
}Nicht vorhandene Schlüssel unterscheiden
Jetzt können Sie den Unterschied erkennen. Bei einem vorhandenen Schlüssel ist ok = true, selbst wenn sein Wert der Nullwert ist.
package main
import "fmt"
func main() {
m := map[string]int{"a": 0}
_, okA := m["a"]
_, okB := m["b"]
fmt.Println("a exists:", okA, "b exists:", okB)
}Vor der Verarbeitung prüfen
Ein häufig verwendetes Muster: Verwenden Sie Komma-ok innerhalb eines if, um nur dann zu handeln, wenn der Schlüssel vorhanden ist.
package main
import "fmt"
func main() {
prices := map[string]int{"pen": 3}
if p, ok := prices["pen"]; ok {
fmt.Println("price is", p)
} else {
fmt.Println("not found")
}
}Den Wert ignorieren
Wenn Sie nur wissen möchten, ob ein Schlüssel vorhanden ist, verwenden Sie für den Wert den Blank-Identifier _.
package main
import "fmt"
func main() {
seen := map[string]bool{"x": true}
_, exists := seen["x"]
fmt.Println("x seen:", exists)
}Vorkommen zählen
Komma-ok lässt sich gut mit Zählern kombinieren. Beachten Sie jedoch: Auch ohne ok funktioniert m[key]++, weil ein fehlender Schlüssel mit dem Wert Null beginnt.
package main
import "fmt"
func main() {
counts := map[string]int{}
for _, w := range []string{"a", "b", "a"} {
counts[w]++
}
fmt.Println(counts)
}Standardwerte sicher verwenden
Sie können mit Komma-ok und einer Standardwertvariablen einen Ersatzwert angeben, wenn ein Schlüssel fehlt.
package main
import "fmt"
func main() {
cfg := map[string]string{}
lang, ok := cfg["lang"]
if !ok {
lang = "en"
}
fmt.Println("lang:", lang)
}Komma-ok auch außerhalb von Maps
Die Form mit zwei Werten kommt auch beim Empfangen aus Channels und bei Typassertionen vor. Das Muster ist einheitlich: Der zweite Wert gibt an, ob der Vorgang erfolgreich war.
package main
import "fmt"
func main() {
var i interface{} = "hello"
s, ok := i.(string)
fmt.Println(s, ok)
}Auf Mitgliedschaft in einer Menge prüfen
Maps mit booleschen oder leeren Struct-Werten werden häufig verwendet, um die Mitgliedschaft zu verfolgen. Komma-ok beantwortet eindeutig die Frage, ob ein Element in der Menge enthalten ist.
package main
import "fmt"
func main() {
allowed := map[string]struct{}{"read": {}, "write": {}}
_, ok := allowed["delete"]
fmt.Println("delete allowed:", ok)
}Bewährte Vorgehensweise
Verwenden Sie immer Komma-ok, wenn ein Nullwert ein zulässiger gespeicherter Wert sein kann. Dadurch wird die Mehrdeutigkeit beseitigt und die Absicht deutlich.
Kurztest
Sie lesen val, ok := m["x"] und erhalten val = 0, ok = true. Was bedeutet das?
Zusammenfassung
Das Vorhandensein mit Komma-ok prüfen:
- Nicht vorhandene Schlüssel geben den Nullwert zurück
val, ok := m[key]meldet das Vorhandensein inok- Verwenden Sie dieses Muster immer, wenn Null ein echter Wert sein kann
Häufig gestellte Fragen
Ist die Lektion „Existenz prüfen“ kostenlos?
Ja — der vollständige Text von „Existenz prüfen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Existenz prüfen“?
Das comma-ok-Idiom Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Existenz prüfen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Map-Interna
- Existenz prüfen
- Maps als Sets
- Iteration und Reihenfolge