Heim > Backend-Entwicklung > Golang > Wie teste ich die Kartenäquivalenz in Go?

Wie teste ich die Kartenäquivalenz in Go?

Mary-Kate Olsen
Freigeben: 2024-11-13 09:46:02
Original
1026 Leute haben es durchsucht

How to Test Map Equivalence in Go?

Testen der Kartenäquivalenz in Go

Bei tabellengesteuerten Tests stellt sich die Herausforderung, die Kartengleichheit zu testen. Das manuelle Überprüfen von Längen und Schlüssel-Wert-Paaren wird mühsam, insbesondere wenn es für verschiedene Kartentypen wiederholt wird.

Idiomatische Lösung

Die idiomatische Lösung nutzt das Reflect-Paket der Go-Standardbibliothek. Die Funktion „reflect.DeepEqual“ nimmt zwei Interface{}-Argumente auf und prüft sie auf Gleichheit, indem sie:

  1. sie auf Nullwerte vergleicht
  2. ihre Längen vergleicht (für Datenstrukturen wie Karten)
  3. Rekursive Überprüfung der Gleichheit ihrer konstituierenden Elemente (Schlüssel-Wert-Paare in Karten)

Beispiel

import "reflect"

func TestMapEquality(t *testing.T) {
    m1 := map[string]int{"foo": 1, "bar": 2}
    m2 := map[string]int{"foo": 1, "bar": 2}
    eq := reflect.DeepEqual(m1, m2)
    if !eq {
        t.Errorf("Maps not equal: %v", m1, m2)
    }
}
Nach dem Login kopieren

Zusätzliche Hinweise

  • reflect.DeepEqual funktioniert mit allen gültiger Kartentyp, was es zu einer vielseitigen Lösung macht.
  • Da es die Schnittstelle akzeptiert{} Argumente ist es wichtig sicherzustellen, dass es sich bei den übergebenen Werten um echte Karten handelt.
  • Die rekursive Natur der Funktion stellt sicher, dass selbst verschachtelte Datenstrukturen gründlich auf Gleichheit verglichen werden.

Das obige ist der detaillierte Inhalt vonWie teste ich die Kartenäquivalenz in Go?. 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