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

Wie teste ich die Gleichwertigkeit von Karten in Golang?

Mary-Kate Olsen
Freigeben: 2024-11-16 22:26:03
Original
580 Leute haben es durchsucht

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.")
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage