Menentukan pantulan.Jenis Antara Muka
Untuk memastikan sama ada sesuatu jenis melaksanakan antara muka menggunakan pakej pantulan, adalah perlu untuk menyediakan a reflect.Type to reflect.Type.Implements(). Walau bagaimanapun, mendapatkan jenis ini kadangkala kelihatan membingungkan, terutamanya untuk antara muka yang tidak dimulakan seperti ralat.
Antara Muka Ralat Tidak Dimulakan
Percubaan untuk menentukan jenis ralat yang tidak dimulakan (antara muka ) menggunakan reflect.TypeOf(err).Kind() akan mengakibatkan panik apabila Kind() adalah dipanggil.
Penyelesaian
Untuk mendapatkan jenis antara muka seperti ralat dengan betul, anda perlu mencipta penuding ke antara muka dahulu dan kemudian menggunakan Elem() pada jenis yang terhasil. Ini boleh dicapai dalam dua cara:
Kaedah Verbose:
var err error t := reflect.TypeOf(&err).Elem()
Kaedah Satu Baris:
t := reflect.TypeOf((*error)(nil)).Elem()
Dengan mengikut pendekatan ini, anda boleh mendapatkan semula pantulan dengan berkesan.Jenis antara muka, tanpa mengira permulaannya negeri.
Atas ialah kandungan terperinci Bagaimana Saya Mendapatkan Refleksi.Jenis Antara Muka Tidak Dimulakan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!