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
Linda Hamiltonasal
2024-11-04 03:57:01531semak imbas

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>

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>

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>

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>

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>

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>

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>

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!

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