Bagaimana untuk Memeriksa Kesamaan Tiga Nilai dengan Elegan dalam Go?

Susan Sarandon
Lepaskan: 2024-11-04 06:12:29
asal
372 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!