Menyemak Nilai Sifar Jenis Arbitrari di Golang
Salah satu tugas biasa dalam pengaturcaraan melibatkan menentukan sama ada pembolehubah dimulakan atau mempunyai nilai lalai. Walau bagaimanapun, ini boleh mencabar di Golang kerana kekurangan nilai sifar universal merentas semua jenis.
Cabaran Membanding
Pendekatan konvensional untuk membandingkan pembolehubah kepada nilai Zero() refleksi tidak selalu berfungsi kerana tidak semua jenis adalah setanding. Sebagai contoh, kepingan tidak dapat dibandingkan, menjadikannya mustahil untuk menggunakan kod berikut:
var v ArbitraryType if v == reflect.Zero(reflect.TypeOf(v)).Interface() { // v is zero }
Penyelesaian dengan Nilai.IsZero()
Nasib baik, Go 1.13 diperkenalkan kaedah Value.IsZero() dalam pakej reflect. Kaedah ini menyediakan penyelesaian untuk menyemak sama ada pembolehubah jenis arbitrari adalah sifar. Sintaksnya ialah:
reflect.ValueOf(v).IsZero()
Kaedah ini berfungsi bukan sahaja untuk jenis asas tetapi juga untuk:
Penggunaan Contoh
Untuk menentukan sama ada pembolehubah v jenis arbitrari ialah sifar:
if reflect.ValueOf(v).IsZero() { // v is zero }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Semak Nilai Sifar Jenis Arbitrari dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!