Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membandingkan Fungsi dalam Go?
Cara Membandingkan Fungsi dalam Go
Pengenalan
Dalam Go, fungsi boleh dirujuk oleh pembolehubah dan diluluskan sebagai hujah kepada fungsi lain. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa fungsi dalam Go tidak boleh dibandingkan secara langsung. Ini bermakna anda tidak boleh menggunakan operator perbandingan standard (==, !=, dsb.) untuk menentukan sama ada dua fungsi adalah sama.
Kaedah Perbandingan Betul
The satu-satunya cara untuk membandingkan dua fungsi dengan tepat ialah membandingkan alamat mereka. Ini kerana alamat fungsi mengenal pasti ia secara unik. Untuk mendapatkan alamat fungsi, anda boleh menggunakan sama ada:
Contoh
Pertimbangkan kod Go berikut:
<code class="go">type Action func(foo string) var Undefined Action = func(foo string) {} var Defined Action = func(foo string) {} func compareFunctions() { if fmt.Sprintf("%v", Undefined) == fmt.Sprintf("%v", Undefined) { fmt.Println("Undefined and Undefined are equal") } else { fmt.Println("Undefined and Undefined are not equal") } if fmt.Sprintf("%v", Defined) == fmt.Sprintf("%v", Defined) { fmt.Println("Defined and Defined are equal") } else { fmt.Println("Defined and Defined are not equal") } if fmt.Sprintf("%v", Undefined) == fmt.Sprintf("%v", Defined) { fmt.Println("Undefined and Defined are equal") } else { fmt.Println("Undefined and Defined are not equal") } }</code>
Apabila anda menjalankan kod ini, ia menghasilkan output berikut:
Undefined and Undefined are equal Defined and Defined are equal Undefined and Defined are not equal
Output ini menunjukkan bahawa fungsi boleh dibandingkan menggunakan alamatnya dan dua fungsi dengan alamat yang berbeza adalah tidak sama.
Kesimpulan
Walaupun nilai fungsi dalam Go tidak boleh dibandingkan secara langsung, adalah mungkin untuk membandingkan alamat mereka untuk menentukan sama ada mereka adalah fungsi yang sama. Menggunakan kaedah yang diterangkan di atas, anda boleh mengenal pasti dengan tepat sama ada dua fungsi adalah sama dalam Go.
Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Fungsi dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!