泛型真的那么厉害吗?
对泛型的不成熟理解
观点
泛型可有可无(有就用没有也无所谓), 为啥还成了 Go 2.0 三大问题之一.
这种小事情值得被拿出来说?
背景
学习之路上, 不明白所以提问, 并不是强调泛型没用大家都别用, 而是我的疑惑.
在 java 中, 使用泛型的时候确实带来很多便捷的帮助
泛型对于我来说主要有两点好处
- 便捷 (Go 的话多封装一些断言也可以哇)
- 代码易读 (通过泛型知道现在使用的对象是谁)
为什么我会有这样的理解?
interface{}
不就能解决吗?
然后通过断言类型
func TestInterface( value interface{} ) {
fmt.Printf("%t", value)
}
所以我理解 泛型的目的就是避免使用大量 类型断言?
听说会降低启动性能? 这都不是最重要的
总结疑惑
为啥泛型成了 Go 2.0 三大问题之一! 这点小事情还搞成大问题了
根据大佬们热心的回答贴上自己的见解
泛型是在编译期做的事情, 使用类型断言会消耗一点性能
有泛型的话就是将 编译期的性能损耗替换了运行时的类型断言性能损耗, 所以使用泛型是有益的?
那为啥 Go 官方一开始不加呢? c 语言的作者们不知道吗? 这个问题点到即止. 还是了解的不够, 再去看看相关知识
断言是有消耗的( https://qinhan.site/2020/04/09/go-type-tra... ) 如果是有泛型的话,在编译阶段进行替换,就没有上述的消耗,一些对于性能有要求的人对这个有追求。 此外我个人觉得虽然泛型会让代码的可读性降低,但是对于代码量上会有一定的减少,看个人喜爱吧,他有也可以不用