Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menambah Kaedah kepada Jenis Sedia Ada dalam Go?

Bagaimanakah Saya Boleh Menambah Kaedah kepada Jenis Sedia Ada dalam Go?

Susan Sarandon
Lepaskan: 2025-01-03 10:07:39
asal
778 orang telah melayarinya

How Can I Add Methods to Existing Types in Go?

Melanjutkan Jenis Sedia Ada dalam Go

Apabila cuba menambah kaedah tersuai pada jenis sedia ada daripada pakej yang diimport, anda mungkin menghadapi ralat yang menunjukkan bahawa anda tidak boleh menentukan kaedah baharu pada jenis bukan tempatan. Had ini berpunca daripada sistem jenis Go, yang tidak membenarkan pengubahsuaian kepada jenis yang ditakrifkan di tempat lain.

Untuk memintas sekatan ini, terdapat dua pendekatan utama:

  1. Tentukan Jenis Baharu dengan Medan Tanpa Nama: Ini melibatkan penciptaan jenis baharu yang membenamkan jenis asal sebagai medan tanpa nama. Anda kemudian boleh menambah kaedah tersuai pada jenis baharu anda.
type MyRoute struct {
    *mux.Route
}

func (m *MyRoute) Subroute(tpl string, h http.Handler) *mux.Route {
    return m.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}

type MyRouter struct {
    *mux.Router
}

func (r *MyRouter) Subroute(tpl string, h http.Handler) *mux.Route {
    return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}
Salin selepas log masuk
  1. Benamkan Jenis Sedia Ada: Daripada pembenaman tanpa nama, anda boleh membenamkan jenis sedia ada secara eksplisit menggunakan kata kunci benam. Ini menyediakan akses kepada medan dan kaedah jenis asal sambil membenarkan anda menentukan kaedah tambahan.
type MyRoute embed mux.Route

func (m *MyRoute) Subroute(tpl string, h http.Handler) *mux.Route {
    return m.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}

type MyRouter embed mux.Router

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambah Kaedah kepada Jenis Sedia Ada dalam Go?. 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