Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Refleksi Dapat Membantu Mengenalpasti Jenis Asas dalam Antara Muka Go?
Menggunakan Refleksi untuk Jenis Semakan Masuk Go
Apabila berurusan dengan antara muka dalam Go, kadangkala perlu mengenal pasti jenis khusus yang mendasari nilai antara muka . Sebagai contoh, anda mungkin ingin membezakan antara struktur dengan nilai rentetan dan jenis lain.
Reflect.TypeOf mengembalikan Type, yang merupakan deskriptor untuk jenis tertentu. Walau bagaimanapun, menegaskan Jenis kembali kepada jenis boleh mencabar.
Mengenal pasti Nilai Jenis Antara Muka
Coretan kod yang disediakan mengenal pasti struktur dengan nilai rentetan menggunakan pernyataan suis dalam fungsi IdentifyItemType. Ini ialah pendekatan yang mudah untuk senario mudah di mana antara muka secara eksplisit dihantar ke jenis sasaran. Walau bagaimanapun, apabila menggunakan pantulan, Jenis dikembalikan melalui reflect.TypeOf tidak boleh ditegaskan terus kepada jenis.
Pendekatan Alternatif
Daripada cuba mencapai penegasan jenis dengan Jenis secara langsung, terdapat cara lain untuk mengendalikan situasi ini dengan berkesan:
switch x.(type) { case int: dosomething() }
s := reflect.ValueOf(x) for i := 0; i < s.NumFields(); i++ { switch s.Field(i).Interface().(type) { case int: dosomething() } }
Pendekatan ini membolehkan anda mengulangi setiap medan dalam antara muka dan memeriksa jenis asas setiap individu nilai.
Atas ialah kandungan terperinci Bagaimanakah Refleksi Dapat Membantu Mengenalpasti Jenis Asas dalam Antara Muka Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!