Wie kann man in Go elegant die Gleichheit von drei Werten prüfen?

Susan Sarandon
Freigeben: 2024-11-04 06:12:29
Original
371 Leute haben es durchsucht

How to Elegantly Check Equality of Three Values in Go?

Alternativen zum verketteten Vergleich für Wertgleichheit

Beim Vergleich von drei Werten auf Gleichheit führt die Verwendung von if a == b == c zu ein Kompilierungsfehler aufgrund von Typkonflikten. Wenn a == b && a == c eine gültige Alternative ist, kann sie umständlich erscheinen. In diesem Artikel werden mehrere kreative Methoden untersucht, um die Gleichheit von drei Werten elegant zu überprüfen.

Option 1: Karte als Satz

Durch Erstellen einer Karte mit den drei Werten als Schlüssel können wir überprüfen, ob alle Werte gleich sind, indem wir überprüfen, ob die Länge der Karte 1 beträgt. Dieser Ansatz ist flexibel und kann mehr als drei Werte aufnehmen.

<code class="go">if len(map[interface{}]int{a: 0, b: 0, c: 0}) == 1 {
    fmt.Println("Map set: all 3 are equal")
}</code>
Nach dem Login kopieren

Option 2: Arrays

Arrays in Go sind im Gegensatz zu Slices vergleichbar. Durch den Vergleich von Arrays mit entsprechenden Elementen aus den drei Werten können wir die Gleichheit prüfen.

<code class="go">if [2]interface{}{a, b} == [2]interface{}{b, c} {
    fmt.Println("Arrays: all 3 are equal")
}</code>
Nach dem Login kopieren

Option 3: Tricky Map

Wir können das Verhalten einer Karte nutzen, um Führen Sie einen einzelnen Vergleich von b == c durch und greifen Sie dann auf den resultierenden Wert für b als Proxy für die Gesamtgleichheit der drei Werte zu.

<code class="go">if map[interface{}]bool{a: b == c}[b] {
    fmt.Println("Tricky map: all 3 are equal")
}</code>
Nach dem Login kopieren

Option 4: Anonyme Strukturen

Strukturwerte in Go sind ebenfalls vergleichbar. Wir können eine anonyme Struktur mit zwei Feldern erstellen, die Strukturen mit den drei Werten vergleichen und auf Gleichheit prüfen.

<code class="go">if struct{ a, b interface{} }{a, b} == struct{ a, b interface{} }{b, c} {
    fmt.Println("Anon structs: all 3 are equal")
}</code>
Nach dem Login kopieren

Option 5: Hilfsfunktion

Wir kann eine Hilfsfunktion definieren, um die Gleichheit einer beliebigen Anzahl von Werten zu überprüfen, indem sie sie iterativ mit einem Startwert vergleicht.

<code class="go">func AllEquals(v ...interface{}) bool {
    if len(v) > 1 {
        a := v[0]
        for _, s := range v {
            if a != s {
                return false
            }
        }
    }
    return true
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann man in Go elegant die Gleichheit von drei Werten prüfen?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!