Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mendapatkan semula `reflect.Type` bagi Antara Muka dalam Go?
Mendapatkan semula Reflect.Jenis Antara Muka
Menentukan sama ada jenis melaksanakan antara muka melalui pakej reflect memerlukan penghantaran reflect.Type to reflect.Type.Implements(). Artikel ini meneroka proses mendapatkan jenis sedemikian.
Mendapatkan Jenis Antara Muka Tidak Dimulakan
Percubaan untuk mendapatkan semula jenis antara muka ralat yang tidak dimulakan (iaitu antara muka type) menggunakan reflect.TypeOf() secara langsung akan mengakibatkan panik apabila cuba mengakses kaedah Kind() yang diperoleh taip. Untuk mengelakkan isu ini, pendekatan berikut boleh digunakan:
Pendekatan 1:
var err error t := reflect.TypeOf(&err).Elem()
Pendekatan ini melibatkan mendapatkan jenis penunjuk ke antara muka, dan kemudian mendapatkan semula jenis konkrit asas (elemen) menggunakan Elem().
Pendekatan 2 (One-Liner):
t := reflect.TypeOf((*error)(nil)).Elem()
Pendekatan ini memanfaatkan fakta bahawa nilai antara muka sifar boleh ditaip ditegaskan kepada mana-mana jenis antara muka. Dengan mencipta penuding nol kepada jenis antara muka yang diingini dan mendapatkan semula jenisnya, anda boleh terus mendapatkan jenis konkrit tanpa perlu mengambil alamat pembolehubah.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan semula `reflect.Type` bagi Antara Muka dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!