Dalam Go, tidak semua pembolehubah menyokong operasi perbandingan, terutamanya untuk jenis kompleks seperti kepingan. Bergantung pada perbandingan langsung boleh membawa kepada hasil yang tidak dijangka dalam kes sedemikian.
Nasib baik, Go 1.13 memperkenalkan kaedah Value.IsZero() dalam pakej reflect untuk menangani isu ini. Kaedah ini menawarkan cara yang mudah untuk menentukan sama ada pembolehubah jenis arbitrari mempunyai nilai sifar. Begini cara untuk menggunakannya:
if reflect.ValueOf(v).IsZero() { // v is zero, do something }
Ungkapan reflect.ValueOf(v) mengekstrak pantulan.Objek nilai untuk pembolehubah v. Kaedah IsZero() kemudiannya digunakan pada objek ini untuk memastikan sama ada nilainya adalah sifar.
Pendekatan ini bukan sahaja menampung jenis primitif tetapi juga menyokong jenis yang lebih rumit seperti Chan, Func, Tatasusunan, Antara Muka, Peta, Ptr, Slice, UnsafePointer dan Struct.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Semak Nilai Sifar dalam Pembolehubah Arbitrary Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!