Heim  >  Artikel  >  Backend-Entwicklung  >  Wie teste ich die Gleichwertigkeit von Karten in Golang?

Wie teste ich die Gleichwertigkeit von Karten in Golang?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-16 22:26:03486Durchsuche

How to Test Equivalence of Maps in Golang?

Äquivalenz von Karten in Golang testen

Beim Schreiben tabellengesteuerter Tests mit Karten kann die Bestimmung ihrer Äquivalenz eine Herausforderung sein. Ein Ansatz besteht darin, die Gleichheit der Längen und einzelner Schlüssel-Wert-Paare manuell zu prüfen, dies wiederholt sich jedoch für verschiedene Kartentypen.

Idiomatischer Ansatz

Die Go-Bibliothek bietet eine integrierte Lösung: reflektieren.DeepEqual. Diese Funktion verwendet zwei Interface{}-Argumente und vergleicht ihre Werte rekursiv. Bei Karten werden Längen, Schlüssel und Werte anhand der folgenden Schritte verglichen:

  1. Überprüft, ob beide Karten Null sind.
  2. Stellt sicher, dass sie die gleiche Länge haben.
  3. Überprüft, ob sie denselben Satz von (Schlüssel-Wert-)Paaren haben.

Beispielverwendung

Um zwei Karten, m1 und m2, zu vergleichen, verwenden Sie die Folgender Code:

import "reflect"

eq := reflect.DeepEqual(m1, m2)
if eq {
    fmt.Println("They're equal.")
} else {
    fmt.Println("They're unequal.")
}

Diese Lösung macht eine benutzerdefinierte Vergleichslogik überflüssig und funktioniert mit verschiedenen Kartentypen. Beachten Sie jedoch, dass bei falscher Übergabe auch Nicht-Kartenwerte verglichen werden.

Das obige ist der detaillierte Inhalt vonWie teste ich die Gleichwertigkeit von Karten in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn