Menentukan Pelaksanaan Antara Muka menggunakan Reflect.Type
Dalam pengaturcaraan berorientasikan objek, adalah penting untuk menyemak sama ada sesuatu jenis melaksanakan antara muka tertentu. Untuk melakukan ini dengan berkesan dalam pakej refleksi Go, representasi reflect.Type antara muka diperlukan. Walau bagaimanapun, mendapatkan jenis ini boleh menjadi mencabar, terutamanya apabila berurusan dengan jenis antara muka yang tidak dimulakan seperti ralat.
Pertimbangkan percubaan berikut, yang membawa kepada panik:
var err error fmt.Printf("%#v\n", reflect.TypeOf(err).Kind())
Untuk menyelesaikan isu ini , fungsi reflect.TypeOf mesti dipanggil pada penunjuk kepada nilai antara muka, bukan nilai itu sendiri. Selain itu, kaedah Elem() boleh digunakan untuk mendapatkan jenis asas penuding, yang mewakili jenis antara muka:
var err error t := reflect.TypeOf(&err).Elem()
Sebagai alternatif, penyelesaian satu baris boleh dicapai menggunakan penegasan jenis:
t := reflect.TypeOf((*error)(nil)).Elem()
Kini, reflect.Type yang diperolehi boleh dihantar untuk reflect.Type.Implements() untuk menentukan sama ada ia melaksanakan antara muka yang dikehendaki.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Pelaksanaan Antara Muka Menggunakan `reflect.Type` Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!