interface{} 与其他语言泛型的区别

来源:6-4 接口的值类型

198703

2020-04-04

老师好,感觉interface{} 可以实现类似泛型的效果,为什么有人诟病go没泛型吗?
真正的泛型是在编译阶段完成的类型擦除,应该本质和interface{}是一样吧。

以后golang会有泛型吗?

写回答

1回答

ccmouse

2020-04-06

的确是这样,很多诟病go语言没有泛型的同学对泛型本身理解不深。

不过泛型还是有他一定的好处的。我在最后一章 19-1 体会Go语言的设计 中也有所总结。所以在go 2.x版本中有考虑引入泛型。

最后,纠正一下java中这种所谓的类型擦除,不是真正的泛型。它只是java的泛型为了和之前兼容而采用的折衷的办法。真正的泛型中,参数的类型不应该被擦除,应该保留到运行时。比如java中传一个List<Stirng>过来,你应该可以在运行时知道这个List里的东西是String。

3
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程