Heim >Backend-Entwicklung >Golang >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:021053Durchsuche

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 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!

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