在Go中输入变量

时间:2013-12-31 02:29:25

标签: go

在Haskell中,map的类型为:

map :: (a -> b) -> [a] -> [b]

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

2 个答案:

答案 0 :(得分:6)

Go没有像Haskell那样的Hindley-Milner类型的系统,所以它不能表达完全相同的东西,比如带有变量的类型。在Go中完成与类型无关的函数的方式是接口。如果要表达“任何类型”,通常将其写为空接口(interface{})。标准库中Map函数的类型是:

func Map(iter Iterable, f func(interface{}) interface{}) Iterable

因此,它不是采用从ab的函数,而是需要一个从interface{}interface{}的函数。

答案 1 :(得分:1)

Chuck已经回答,但您可能会发现我的ty图书馆很有用:http://godoc.org/github.com/BurntSushi/ty/fun