Maps vergleichen
Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 29 von 68.
Im Gegensatz zu vielen anderen Datentypen in Go haben Maps eine einzigartige Einschränkung: Sie können nicht direkt mit dem ==-Operator verglichen werden. Die einzige Ausnahme von dieser Regel ist der Vergleich einer Map mit nil.
Das bedeutet, dass Code wie dieser nicht kompiliert wird:
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
// Dies wird einen Kompilierfehler verursachen!
if map1 == map2 {
fmt.Println("Maps are equal")
}Sie können eine Map jedoch sicher mit nil vergleichen:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}Wenn Sie prüfen müssen, ob zwei Maps dieselben Schlüssel-Wert-Paare enthalten, müssen Sie eine benutzerdefinierte Funktion schreiben, die beide Maps durchläuft und jedes Element einzeln vergleicht. Dieser Ansatz gibt Ihnen die vollständige Kontrolle über die Vergleichslogik, sodass Sie genau definieren können, was „gleich“ für Ihren spezifischen Anwendungsfall bedeutet.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Spickzettel
Maps können nicht direkt mit dem ==-Operator verglichen werden, außer beim Vergleich mit nil:
// Dies wird NICHT kompiliert
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
if map1 == map2 { // Kompilierfehler!
fmt.Println("Maps are equal")
}Sie können eine Map mit nil vergleichen:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}Um zu prüfen, ob zwei Maps gleich sind, müssen Sie eine benutzerdefinierte Funktion schreiben, die beide Maps durchläuft und jedes Element einzeln vergleicht.
Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittener Kontrollfluss
Switch mit `fallthrough`Abbrechen von verschachtelten SchleifenFortsetzen einer bestimmten SchleifeDie `goto`-AnweisungZusammenfassung – Fortgeschrittene Schleifensteuerung4Projekt: Einfache Aufgabenliste
Projekt-SetupEine Aufgabe hinzufügen2Structs und Methoden
Methoden für Structs definierenValue ReceiverPointer ReceiverReceiver auswählenMethoden vs. FunktionenZusammenfassung – Struct-Verhalten5Maps im Detail
Maps von StructsPointer als Map-WertePrüfen auf Nil-MapsMaps vergleichenZusammenfassung – Wortfrequenz-Zähler8Projekt: Einfache Bestandsverwaltung
ProjektübersichtLagerbestand prüfen11Abschlussherausforderungen
Einfache KontaktlisteEinfacher Zahlen-ValidatorSammler für eindeutige Elemente3Interfaces (Die Grundlagen)
Was ist ein Interface?Ein Interface definierenEin Interface implementierenInterface-Typen verwendenLeeres InterfaceType AssertionsType SwitchZusammenfassung – Formen und Verhalten