Rumah >pembangunan bahagian belakang >Golang >Bagaimana Saya Mendapatkan Refleksi.Jenis Antara Muka Tidak Dimulakan dalam Go?

Bagaimana Saya Mendapatkan Refleksi.Jenis Antara Muka Tidak Dimulakan dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-19 11:09:14349semak imbas

How Do I Get the reflect.Type of an Uninitialized Interface in Go?

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!

Kenyataan:
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