Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memeriksa Kesamaan Tiga Nilai dengan Elegan dalam Go?

Bagaimana untuk Memeriksa Kesamaan Tiga Nilai dengan Elegan dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-11-04 06:12:29374semak imbas

How to Elegantly Check Equality of Three Values in Go?

Alternatif kepada Perbandingan Berantai untuk Kesaksamaan Nilai

Apabila membandingkan tiga nilai untuk kesaksamaan, menggunakan if a == b == c menghasilkan ralat penyusunan kerana jenis tidak sepadan. Walaupun jika a == b && a == c ialah alternatif yang sah, ia boleh kelihatan menyusahkan. Artikel ini meneroka beberapa kaedah kreatif untuk memeriksa kesamaan tiga nilai secara elegan.

Pilihan 1: Peta sebagai Set

Dengan mencipta peta dengan tiga nilai sebagai kunci , kita boleh menyemak sama ada semua nilai adalah sama dengan mengesahkan sama ada panjang peta ialah 1. Pendekatan ini fleksibel dan boleh menampung lebih daripada tiga nilai.

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

Pilihan 2: Tatasusunan

Array dalam Go adalah setanding, tidak seperti kepingan. Dengan membandingkan tatasusunan dengan elemen sepadan daripada tiga nilai, kita boleh menyemak kesamaan.

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

Pilihan 3: Peta Rumit

Kita boleh memanfaatkan gelagat peta untuk lakukan satu perbandingan b == c dan kemudian akses nilai yang terhasil untuk b sebagai proksi untuk kesamaan keseluruhan tiga nilai.

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

Pilihan 4: Struktur Tanpa Nama

Nilai struktur dalam Go juga boleh dibandingkan. Kami boleh mencipta struct tanpa nama dengan dua medan, membandingkan struct yang mengandungi tiga nilai dan menyemak kesamaan.

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

Pilihan 5: Fungsi Pembantu

Kami boleh mentakrifkan fungsi pembantu untuk menyemak kesamaan bilangan nilai sewenang-wenangnya dengan membandingkannya secara berulang kepada nilai benih.

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

Atas ialah kandungan terperinci Bagaimana untuk Memeriksa Kesamaan Tiga Nilai dengan Elegan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn