Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengesan Nilai Kosong dengan Cepat dalam Antara Muka Go Menggunakan Refleksi?

Bagaimanakah Saya Boleh Mengesan Nilai Kosong dengan Cepat dalam Antara Muka Go Menggunakan Refleksi?

Patricia Arquette
Lepaskan: 2024-12-14 06:54:49
asal
260 orang telah melayarinya

How Can I Quickly Detect Empty Values in Go Interfaces Using Reflection?

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:

  • 0 (untuk int)
  • "" (untuk rentetan)
  • salah (untuk bool)
  • nihil (untuk petunjuk dan rujukan lain jenis)

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()
}
Salin selepas log masuk

Penjelasan:

  • reflect.TypeOf(x) mendapatkan semula maklumat jenis nilai antara muka x.
  • reflect.Zero(reflect.TypeOf(x)) mencipta nilai sifar itu taip.
  • Antaramuka() menukarkan nilai sifar kembali kepada nilai antara muka.
  • Membandingkan x dengan nilai sifar menggunakan operator == menyemak jika nilai yang disimpan kosong (iaitu, tidak dimulakan) .

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())
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan