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

Wie vergleiche ich Karten in Go zuverlässig?

Linda Hamilton
Freigeben: 2024-11-19 15:04:02
Original
539 Leute haben es durchsucht

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:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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.")

    }

}

Nach dem Login kopieren

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!

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