在Haskell中,map有类型:
map :: (a -> b) -> [a] -> [b]
Run Code Online (Sandbox Code Playgroud)
请注意,a并且b不是绝对类型而是类型变量,这意味着它们可以是任何类型,只要每个变量在特定函数调用中始终引用相同类型即可.如何在Go中做同样的事情?
Go没有类似Haskell的Hindley-Milner类型系统,所以它不能表达完全相同的东西,比如带变量的类型.在Go中完成与类型无关的函数的方式是接口.如果你想表达"任何类型",那通常写成一个空接口(interface{}).标准库中Map函数的类型是:
func Map(iter Iterable, f func(interface{}) interface{}) Iterable
Run Code Online (Sandbox Code Playgroud)
因此,而不是采取从去功能a来b,它需要从进了函数interface{}来interface{}.
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |