Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Memanjangkan Jenis Sedia Ada dalam Go Tanpa Mengubah Suai Kod Asal?

Bagaimanakah Saya Boleh Memanjangkan Jenis Sedia Ada dalam Go Tanpa Mengubah Suai Kod Asal?

Susan Sarandon
Lepaskan: 2024-12-17 07:46:24
asal
580 orang telah melayarinya

How Can I Extend Existing Types in Go Without Modifying the Original Code?

Melanjutkan Jenis Sedia Ada dalam Go

Dalam Go, melanjutkan jenis sedia ada daripada pakej berbeza tidak disokong secara langsung. Walau bagaimanapun, terdapat teknik alternatif untuk mencapai kefungsian yang serupa.

Merangkul Medan Tanpa Nama

Salah satu pendekatan ialah mentakrifkan jenis baharu yang membenamkan jenis sedia ada sebagai medan tanpa nama. Ini membolehkan anda menentukan kaedah tambahan pada jenis baharu anda tanpa mengubah suai yang asal. Berikut ialah contoh:

type MyRoute struct {
    mux.Route
}

func (r *MyRoute) Subroute(tpl string, h http.Handler) *mux.Route {
    return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}
Salin selepas log masuk

Membenamkan Terus

Pilihan lain ialah membenamkan secara langsung jenis sedia ada sebagai medan bernama dan menggunakan penuding untuk mengakses dan melanjutkan jenis terbenam.

type MyRouter struct {
    *mux.Router
}

func (r *MyRouter) Subroute(tpl string, h http.Handler) *mux.Route {
    return r.Router.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}
Salin selepas log masuk

Pertimbangkan Pakej Sambungan

Dalam sesetengah kes, ia mungkin boleh dibuat untuk membuat sambungan pakej yang menyediakan fungsi tambahan kepada jenis sedia ada. Walau bagaimanapun, ini memerlukan pengubahsuaian kod sumber pakej asal dan biasanya tidak disyorkan untuk perpustakaan kongsi.

Keputusan

Pendekatan yang sesuai bergantung pada keperluan khusus dan pengehadan projek anda. Jika anda perlu mengakses dan mengubah suai jenis sedia ada secara langsung, pembenaman mungkin sesuai. Pertimbangkan untuk menggunakan medan tanpa nama jika anda ingin menyembunyikan jenis asas daripada API. Terokai pakej sambungan jika anda mempunyai kebebasan untuk mengubah suai kod sumber asal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanjangkan Jenis Sedia Ada dalam Go Tanpa Mengubah Suai Kod Asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan