我正在嘗試編寫函數Map
,以便它可以處理所有類型的數組。如何在golang中爲通用參數編寫func
// Interface to specify generic type of array.
type Iterable interface {
}
func main() {
list_1 := []int{1, 2, 3, 4}
list_2 := []uint8{'a', 'b', 'c', 'd'}
Map(list_1)
Map(list_2)
}
// This function prints the every element for
// all []types of array.
func Map(list Iterable) {
for _, value := range list {
fmt.Print(value)
}
}
但它會引發編譯時錯誤。
19: cannot range over list (type Iterable)
該錯誤是正確的,因爲需要range
數組,指針到一個數組,切片,字符串,地圖,或信道允許接收操作和這裏類型是Iterable
。我認爲我面臨的問題是,將參數類型Iterable
轉換爲數組類型。請建議,我如何使用我的函數來處理通用數組。
中沒有'泛型',是否可以從接口參數中知道類型和值?我仍然試圖從共同的例子中瞭解它。 –
@ subh.singh不是動態的,這就是爲什麼最好使用已知接口的數組而不是'interface {}'。 – VonC
@ subh.singh至少不是沒有反思,就像http://play.golang.org/p/jxMFq5UYs1中提到的https://www.tbray.org/ongoing/When/201x/2013/07/15/Golang-日記-2。 – VonC