在Go中输入变量

The*_*nce 2 go

在Haskell中,map有类型:

map :: (a -> b) -> [a] -> [b]
Run Code Online (Sandbox Code Playgroud)

请注意,a并且b不是绝对类型而是类型变量,这意味着它们可以是任何类型,只要每个变量在特定函数调用中始终引用相同类型即可.如何在Go中做同样的事情?

Chu*_*uck 6

Go没有类似Haskell的Hindley-Milner类型系统,所以它不能表达完全相同的东西,比如带变量的类型.在Go中完成与类型无关的函数的方式是接口.如果你想表达"任何类型",那通常写成一个空接口(interface{}).标准库中Map函数的类型是:

func Map(iter Iterable, f func(interface{}) interface{}) Iterable
Run Code Online (Sandbox Code Playgroud)

因此,而不是采取从去功能ab,它需要从进了函数interface{}interface{}.