0
我是新來的,遇到以下問題,但我無法在教程或谷歌搜索中找到,但我確定它必須是我錯過的語言的基本方面。我有一個像下面的代碼:在golang中聲明一個具有任意返回類型的函數類型
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 }
在上面f
,沒有編譯器錯誤,但對於g
和h
有像下面的錯誤:
Cannot use func() { return "foo" } (type func()) as type TaskWithValue in assignment
從本質上講,我想定義一個可以有任意返回類型的Task
類型。在其他語言中,我只會給Task
一個類型參數,如Task<Integer>
或Task<String>
,但由於go沒有泛型/模板,因此我明白解決方法是使用返回類型interface{}
,然後轉換結果。我錯過了什麼讓這個例子工作?