いくつかの構造体といくつかの関数をエクスポートするパッケージを想像してください。ゴランにパッケージを入れる
そのパッケージの周りにラッパーを作ってドロップインとして使用できるようにするには、古い構造体が埋め込まれた構造体を再作成する必要がありますか?例:
package foo
type Foo struct {
Field string
}
func DoSomething() {
}
package bar
import foo
type Foo struct {
foo.Foo
}
func DoSomething() {
foo.DoSomething()
}
は、より良い方法はありますか?これは慣用的なやり方ですか?
最も慣用的なアプローチは、net/httpの 'Handler'のように、ドロップインタイプが満たす必要があるメソッドを記述するinterface {}型を定義することです。 – Nadh
残念ながら、インターフェイスは構造体のメソッドに対してのみ機能し、パッケージスコープ付きの関数に対しては機能しません。 –
あなたは何をする必要があるか分かっているようです - エクスポートされたすべてのシンボルをミラー化する必要があります。埋め込みは自動委任の一形態に過ぎないため、どこで動作させるかを手動で行うことができます。ここには魔法はありません。 – JimB