0Pricing
Go Academy · Lektion

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 in ok
  • 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

  1. Map-Interna
  2. Existenz prüfen
  3. Maps als Sets
  4. Iteration und Reihenfolge
← Zurück zu Go Academy