2017-04-12 18 views
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 } 

は、何のコンパイラエラーが存在しませんが、ghのために、以下のようなエラーがある:

Cannot use func() { return "foo" } (type func()) as type TaskWithValue in assignment 

は基本的に、私がしようとしている私は、次のようなコードを持っています任意の戻り値型を持つことができるTask型を定義します。他の言語では、Task<Integer>Task<String>のようなタイプのパラメータをTaskに渡すだけですが、goにジェネリック/テンプレートがないため、戻り値タイプinterface{}を使用して結果をキャストすることを回避方法として理解しました。このサンプルがうまくいくためには何が欠けていますか?

答えて

1

あなたは匿名関数式で戻り値の型が欠落している:

var g TaskWithValue = func() interface{} { return "foo" } 

var h TaskWithValue = func() interface{} { return 123 } 
関連する問題