Heim  >  Artikel  >  Backend-Entwicklung  >  Wie vergleiche ich Karten in Go zuverlässig?

Wie vergleiche ich Karten in Go zuverlässig?

Linda Hamilton
Linda HamiltonOriginal
2024-11-19 15:04:02460Durchsuche

How to Reliably Compare Maps in Go?

Karten in Go vergleichen

Beim Schreiben tabellengesteuerter Tests in Go müssen Entwickler häufig Karten vergleichen. Ein gängiger Ansatz besteht darin, Karten in Zeichenfolgen zu konvertieren und die Zeichenfolgen dann zu vergleichen. Dabei wird davon ausgegangen, dass äquivalente Karten dieselben Zeichenfolgendarstellungen aufweisen. Dieser Ansatz weist jedoch Einschränkungen auf.

Reflect-basierter Vergleich mit Reflect.DeepEqual

Eine zuverlässigere und idiomatischere Möglichkeit, Karten zu vergleichen, ist die Verwendung des Reflection-Pakets von Go. Mit der Funktion „reflect.DeepEqual“ können zwei Werte, einschließlich Karten, gründlich verglichen werden. Es stellt sicher, dass:

  • Beide Karten nicht Null sind.
  • Die Karten haben die gleiche Länge.
  • Die Karten haben den gleichen Satz von (Schlüssel, Wert) Paare.

Beispielcode für den Kartenvergleich

Betrachten Sie den folgenden Beispielcode, um Karten mit Reflect.DeepEqual zu vergleichen:

import (
    "fmt"
    "reflect"
)

func main() {
    m1 := map[string]int{"foo": 1, "bar": 2}
    m2 := map[string]int{"foo": 1, "bar": 2}

    eq := reflect.DeepEqual(m1, m2)
    if eq {
        fmt.Println("The maps are equal.")
    } else {
        fmt.Println("The maps are not equal.")
    }
}

Vorteile der Verwendung von „reflect.DeepEqual“

Der Vorteil der Verwendung von „reflect.DeepEqual“ besteht darin, dass es eine robuste und generische Möglichkeit bietet, Karten jeglicher Art zu vergleichen (z. B. „map[string]int“, „map [string]string usw.). Es bewältigt die Komplexität des Kartenvergleichs intern und macht fehleranfällige benutzerdefinierte Schleifen überflüssig.

Das obige ist der detaillierte Inhalt vonWie vergleiche ich Karten in Go zuverlässig?. 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