擴充Go 中的現有型別
當嘗試從匯入的套件中向現有型別新增自訂方法時,您可能會遇到錯誤,表示您無法在非本機類型上定義新方法。此限制源自於 Go 的類型系統,該系統不允許修改其他地方定義的類型。
要規避此限制,有兩種主要方法:
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) }
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) }
以上是如何為 Go 中的現有類型新增方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!