editor php Baicao memperkenalkan anda cara menggunakan generik dan jenis tersuai bersama-sama. Generik ialah teknik yang biasa digunakan dalam pengaturcaraan untuk menjadikan kod lebih fleksibel dan boleh digunakan semula. Jenis tersuai ialah jenis data yang ditakrifkan oleh pembangun sendiri berdasarkan keperluan perniagaan. Apabila kita perlu menggunakan generik dalam jenis tersuai, kita boleh melakukannya melalui kelas generik atau antara muka generik. Dengan menggunakan jenis generik dan tersuai secara rasional, kami boleh meningkatkan kebolehselenggaraan dan kebolehskalaan kod dengan lebih baik. Dalam artikel berikut, kami akan memperincikan kaedah dan pertimbangan khusus untuk menggunakan generik dengan jenis tersuai.
Saya benar-benar keliru tentang bagaimana peraturan generik berfungsi. Saya hanya mahu fungsi menerima pelbagai jenis tersuai dan mempunyai logik yang berbeza untuk setiap jenis.
type myObjOne struct { myfield string } type myObjTwo struct { myObjTwo myOtherField string } type Generic interface { myObjOne | myObjTwo } func derp[T Generic](c T) { switch any(c).(type) { case myObjOne: // I can't access the fields of my types like this c.myfield = "sdfsfsdfdsf" case myObjTwo: c.myOtherField = "sdfsfsdfdsf" } return }
Mengapa c.myfield
membuang c.myfield undefined (jenis T tidak mempunyai medan atau kaedah myfield) compilerMissingFieldOrMethod
? c.myfield
抛出 c.myfield 未定义(类型 T 没有字段或方法 myfield)compilerMissingFieldOrMethod
?
c
是类型 T
c
。 c
T
, bukan hasil penegasan jenis. Dibetulkan dengan memberikan hasil penegasan jenis kepada pembolehubah.
func derp[T Generic](c T) { switch c := any(c).(type) { case myObjOne: // I can't access the fields of my types like this c.myfield = "sdfsfsdfdsf" case myObjTwo: c.myOtherField = "sdfsfsdfdsf" } return }
Atas ialah kandungan terperinci Bagaimana untuk menggunakan generik dengan jenis tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!