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!