Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah saya boleh menyemak sama ada Tiga Nilai adalah Sama dalam Go?

Bagaimanakah saya boleh menyemak sama ada Tiga Nilai adalah Sama dalam Go?

Linda Hamilton
Lepaskan: 2024-11-04 03:57:01
asal
517 orang telah melayarinya

How Can I Check if Three Values are Equal in Go?

Menyemak Kesamaan Tiga Nilai Secara Elegan

Walaupun pendekatan tradisional dengan if a == b == c menghasilkan ralat sintaks, terdapat adalah kaedah alternatif untuk menentukan sama ada tiga nilai adalah sama.

Menggunakan Pendekatan yang Jelas dan Ringkas

Penyelesaian paling mudah kekal:

<code class="go">if a == b && a == c {
    fmt.Println("All 3 are equal")
}</code>
Salin selepas log masuk

Ini penyelesaian adalah mudah dan cekap, membuat perbandingan pada asas setiap pasangan.

Meneroka Penyelesaian Kreatif

Menggunakan Peta sebagai Set:

Fungsi len() mengembalikan bilangan kunci unik dalam peta. Dengan menggunakan peta dengan kekunci antara muka{}, kita boleh menyemak sama ada semua nilai adalah sama dengan membandingkan panjang peta kepada 1:

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

Dengan Tatasusunan:

Tatasusunan adalah setanding, membolehkan kami membandingkan berbilang elemen serentak:

<code class="go">if [2]interface{}{a, b} == [2]interface{}{b, c} {
    fmt.Println("All 3 are equal")
}</code>
Salin selepas log masuk

Menggunakan Peta Rumit:

Kami boleh mengindeks peta dengan kunci yang menghasilkan nilai perbandingan:

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

Dengan Struktur Tanpa Nama:

Struktur juga boleh dibandingkan, jadi kami boleh mencipta struct tanpa nama dengan nilai dan membandingkannya:

<code class="go">if struct{ a, b interface{} }{a, b} == struct{ a, b interface{} }{b, c} {
    fmt.Println("All 3 are equal")
}</code>
Salin selepas log masuk

Dengan Slices:

Untuk membandingkan kepingan, kami menggunakan fungsi reflect.DeepEqual():

<code class="go">if reflect.DeepEqual([]interface{}{a, b}, []interface{}{b, c}) {
    fmt.Println("All 3 are equal")
}</code>
Salin selepas log masuk

Menggunakan Fungsi Pembantu:

Kami boleh menentukan fungsi pembantu untuk mengendalikan sebarang bilangan nilai:

<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 Bagaimanakah saya boleh menyemak sama ada Tiga Nilai adalah Sama 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