私がやろうとしていること:実装を使用して呼び出されるインタフェースを使用してコールバックパラメータを定義
私はいくつかのタイプを定義しています。コード全体には、コールバックがあり、コールバック型をどこにでも書く代わりに、その型を定義しました。
type Foo interface {
Bar()
}
type MyCallback func(f Foo)
type CoolFoo int
type BadFoo int
func (cf *CoolFoo) Bar(cb MyCallback) {
}
func (bf *BadFoo) Bar(cb MyCallback) {
}
その後、そのライブラリを使用しているクライアントコードから、コールバックを使用して呼び出す必要があります。
cf := &CoolFoo{}
cf.Bar(func(f packageName.Foo) {
})
しかし、私はむしろ私のIDEで、より自己文書化コード、および適切なタイプヒンティングを持っているでしょうので、私のような、実装タイプを使用して、それを呼び出すようにしてみてください。私は、インターフェイスタイプを使用して、それを呼び出した場合、それは動作しますこの:
cannot use func literal (type func(packageName.CoolFoo)) as type packageName.MyCallback in argument to cf.Bar
ことが可能とされていないか、私はいくつかのダミーのミスを作っています:エラーが発生して、コンパイルに失敗し
cf := &CoolFoo{}
cf.Bar(func(f packageName.CoolFoo) {
})
?私はdevデベロッパではあまり経験がありません。私は見回してみましたが、ここで解決策を見つけることができませんでした。私が見つけた何
はFooのか、私が欲しいものにコールバックでキャストし、インターフェイス{}として渡しているが、私はそれが任意のヘルプ厄介
感謝を感じているとして、それを避けたいです