2 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
正如 Rob Pike 在此線程中提到的
是否可以在 Go 類型開關(guān)中表達(dá)“任何映射”、“任何數(shù)組”或“任何切片”?
否 。靜態(tài)類型必須是精確的。
空接口實(shí)際上是一種類型,而不是通配符。
您只能迭代特定類型的列表,例如具有已知功能的接口。
您可以看到一個(gè)示例,其中包含“我們可以在 go 中編寫通用數(shù)組/切片重復(fù)數(shù)據(jù)刪除嗎? ”
即使使用反射,interface{}
如本線程所示,傳遞切片也容易出錯(cuò)(請參閱此示例)。

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
您對 Map 的定義有些不完整。聲明它的通常方法是使用 mapper 方法。您的示例至少可以通過這種方式實(shí)現(xiàn)
package main
import "fmt"
// Interface to specify something thet can be mapped.
type Mapable interface {
}
func main() {
list_1 := []int{1, 2, 3, 4}
list_2 := []string{"a", "b", "c", "d"}
Map(print, list_1)
Map(print, list_2)
}
func print(value Mapable){
fmt.Print(value)
}
// This function maps the every element for
// all []types of array.
func Map(mapper func(Mapable), list ... Mapable) {
for _, value := range list {
mapper(value)
}
}
它有效。需要說它有點(diǎn)無類型。因?yàn)椴唬珿o 沒有 Hindley-Milner 意義上的“泛型”
- 2 回答
- 0 關(guān)注
- 206 瀏覽
添加回答
舉報(bào)