Pengesanan Pantas Nilai Kosong melalui Reflection in Go
Apabila berurusan dengan antara muka yang menyimpan int, rentetan, bool atau nilai lain, ia adalah selalunya diperlukan untuk menentukan sama ada nilai yang disimpan tidak dimulakan. Ini bermakna menyemak sama ada ia sama dengan mana-mana yang berikut:
Penyelesaian:
Untuk menyemak ini dengan cekap dalam Go, anda boleh menggunakan pantulan dan pantulan.Zero() fungsi:
func IsZeroOfUnderlyingType(x interface{}) bool { return x == reflect.Zero(reflect.TypeOf(x)).Interface() }
Penjelasan:
Nota:
Penyelesaian asal yang digunakan == untuk perbandingan, yang mungkin tidak berfungsi untuk jenis yang tidak setanding. Untuk memastikan keserasian universal, anda boleh menggunakan reflect.DeepEqual() sebaliknya:
func IsZeroOfUnderlyingType(x interface{}) bool { return reflect.DeepEqual(x, reflect.Zero(reflect.TypeOf(x)).Interface()) }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Nilai Kosong dengan Cepat dalam Antara Muka Go Menggunakan Refleksi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!