0
私は新しいですが、チュートリアルやGoogleの検索でカバーしていない次の問題に出くわしました。私が逃した言語の基本的な側面でなければならない。ゴールンで任意の戻り値の型を持つ関数型を宣言する
上記f
で
type Task func()
var f Task = func() { fmt.Println("foo") }
type TaskWithValue func() interface{}
var g TaskWithValue = func() { return "foo" }
var h TaskWithValue = func() { return 123 }
は、何のコンパイラエラーが存在しませんが、g
とh
のために、以下のようなエラーがある:
Cannot use func() { return "foo" } (type func()) as type TaskWithValue in assignment
は基本的に、私がしようとしている私は、次のようなコードを持っています任意の戻り値型を持つことができるTask
型を定義します。他の言語では、Task<Integer>
やTask<String>
のようなタイプのパラメータをTask
に渡すだけですが、goにジェネリック/テンプレートがないため、戻り値タイプinterface{}
を使用して結果をキャストすることを回避方法として理解しました。このサンプルがうまくいくためには何が欠けていますか?