Go での既存の型の拡張
インポートされたパッケージから既存の型にカスタム メソッドを追加しようとすると、次のことを示すエラーが発生する場合があります。非ローカル型には新しいメソッドを定義できません。この制限は、他の場所で定義された型への変更を禁止する Go の型システムに由来します。
この制限を回避するには、主に 2 つのアプローチがあります。
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 中国語 Web サイトの他の関連記事を参照してください。