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

Wie teste ich die Kartenäquivalenz in Go?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-13 09:46:02980Durchsuche

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)
    }
}

Zusätzliche Hinweise

  • reflect.DeepEqual funktioniert mit jedem gültigen Kartentyp und ist somit eine vielseitige Lösung.
  • Da es Interface{}-Argumente akzeptiert, ist es wichtig, sicherzustellen, dass die übergebenen Werte vorliegen sind echte Karten.
  • 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!

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