Go で既存の型を操作する場合、機能を強化するためにカスタム メソッドで型を拡張する必要が生じる場合があります。ただし、提供されているサンプル コードが示すように、非ローカル型にメソッドを直接追加することは禁止されています。
この制限を克服するには、主に 2 つのアプローチを考慮する必要があります。
1.ラッパー型の定義:
例:
type MyRouter struct { mux.Router // Anonymous field } func (m *MyRouter) F() { ... } r := &MyRouter{origRouter} r.F()
2.元の型の埋め込み:
例:
type MyRouter struct { *mux.Router // Embedded field } func (m *MyRouter) F() { ... } router := &MyRouter{origRouter} router.F()
どちらのアプローチでも、既存の型を変更せずに拡張できます。オリジナルパッケージ。新しい型を作成するか、元の型を埋め込むことで、カスタマイズした型のインスタンスを操作できる追加のメソッドを定義できます。
以上がGo で既存の型にカスタム メソッドを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。