免责声明:我现在只和Go玩了一天,所以我很有可能错过了很多。
有谁知道为什么Go中没有对泛型/模板/ whatsInAName的真正支持?因此,有一个通用的map
,但这是由编译器提供的,而Go程序员不能编写自己的实现。关于如何使Go尽可能正交的所有讨论,为什么我可以使用通用类型而不创建新类型?
尤其是在函数式编程方面,有lambda甚至闭包,但是在缺少泛型的静态类型系统中,我该如何编写泛型高阶函数,如filter(predicate, list)
?好的,可以通过interface{}
牺牲类型安全性来完成链接列表等。
由于在SO / Google上进行的快速搜索没有发现任何见解,因此,仿制药(如果有的话)似乎会在事后添加到Go中。我相信Thompson会比Java员工做得更好,但是为什么要排除泛型呢?还是他们已经计划并且尚未实施?
interface{}
牺牲了静态类型的安全性。但是,在下一个提到Scheme时,这是一个有点奇怪的投诉,因为Scheme通常没有静态类型检查。