Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Memanjangkan Fungsi Jenis Bukan Tempatan dalam Go?
Melanjutkan fungsi kepada jenis sedia ada yang ditakrifkan dalam pakej lain adalah keperluan biasa dalam pembangunan perisian. Dalam Go, apabila jenis diklasifikasikan sebagai sama ada tempatan atau bukan tempatan, percubaan untuk menambah kaedah baharu kepada jenis bukan tempatan boleh menjadi mencabar. Artikel ini meneroka pendekatan yang berbeza untuk mencapai objektif ini.
Coretan kod yang disediakan menunjukkan percubaan untuk menambah kaedah utiliti pada jenis Laluan dan Penghala daripada github.com/0xor1/gorillaseed /src/server/lib/mux pakej. Walau bagaimanapun, pengkompil melaporkan ralat yang menyatakan bahawa mentakrifkan kaedah baharu pada jenis bukan tempatan adalah tidak dibenarkan.
Untuk mengatasi had ini, Go menawarkan beberapa teknik:
1. Mentakrifkan Struktur Baharu dengan Medan Tanpa Nama
Satu pendekatan ialah mencipta jenis struct baharu yang membenamkan jenis asal sebagai medan tanpa nama. Contohnya:
type MyRoute struct { *mux.Route }
Ini membolehkan anda mentakrifkan kaedah tersuai pada MyRoute yang mewarisi akses kepada medan mux.Route.
2. Membenamkan Jenis Asal
Sebagai alternatif, anda boleh membenamkan jenis asal secara eksplisit dalam jenis struct baharu anda:
type MyRouter struct { mux.Router }
Pendekatan ini memberikan takrifan yang lebih jelas tentang hubungan warisan, sementara masih membolehkan anda melanjutkan kefungsian jenis terbenam.
3. Membungkus Jenis Asal
Pilihan lain ialah mencipta jenis pembalut yang melaksanakan kaedah yang diingini sambil mewakilkan fungsi asas kepada jenis asal. Contohnya:
type MyRouter struct { Router mux.Router } func (r *MyRouter) F() { // Do something r.Router.G() }
Pendekatan ini menawarkan fleksibiliti dan membolehkan anda menyesuaikan gelagat jenis yang dibalut sambil masih memanfaatkan kefungsian asal.
Melanjutkan bukan- jenis tempatan dalam Go memerlukan penggunaan bijak bagi pembenaman struktur atau jenis pembalut. Dengan memanfaatkan teknik ini, anda boleh meningkatkan jenis sedia ada dengan fungsi tersuai tanpa melanggar prinsip pengkapsulan bahasa Go.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanjangkan Fungsi Jenis Bukan Tempatan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!