Wie testet man die Äquivalenz von Karten in Golang?

Mary-Kate Olsen
Freigeben: 2024-11-17 06:31:03
Original
721 Leute haben es durchsucht

How Do You Test the Equivalence of Maps in Golang?

Testäquivalenz von Karten in Golang

Bei tabellengesteuerten Tests ist es entscheidend, die Gleichheit zweier Karten sicherzustellen. Während benutzerdefinierte Implementierungen und String-Konvertierungen umständlich sein können, bietet Golang eine integrierte Lösung.

Verwendung von „reflect.DeepEqual“

Das Reflect-Paket stellt die DeepEqual-Funktion bereit, die Werte, einschließlich Karten, rekursiv vergleicht. Es prüft:

  • Nullwerte
  • Kartenlängen
  • Schlüssel-Wert-Paare
import "reflect"

eq := reflect.DeepEqual(m1, m2)
Nach dem Login kopieren

Dieser umfassende Vergleich gewährleistet genaue Gleichheit Testen für Karten jeglicher Art (z. B. map[string]bool, map[struct{}]interface{}). Beachten Sie, dass Schnittstellentypen als Argumente erforderlich sind.

Implementierungsdetails

Der Quellcode für Reflect.DeepEquals Map-Fall zeigt:

if p, ok := v1.(reflect.Map); ok && q, ok := v2.(reflect.Map) {
    if p.Len() != q.Len() {
        return false
    }
    for _, k := range p.Keys() {
        if !q.Has(k) || !DeepEqual(p.Elem(k).Interface(), q.Elem(k).Interface()) {
            return false
        }
    }
    return true
}
Nach dem Login kopieren

Es überprüft Nullwerte und Kartenlängen und Schlüssel-Wert-Paare. Durch die Übergabe von Schnittstellentypen wird die Kompatibilität mit verschiedenen Kartenimplementierungen sichergestellt.

Fazit

Die Verwendung von Reflect.DeepEqual zum Testen der Kartengleichheit in Golang ist eine idiomatische und effiziente Lösung. Es verarbeitet alle Randfälle und gewährleistet einen genauen Vergleich für jede Art von Karte. Dies vereinfacht tabellengesteuerte Tests und erhöht die Zuverlässigkeit Ihres Codes.

Das obige ist der detaillierte Inhalt vonWie testet man die Äquivalenz von Karten in Golang?. 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