gitalk
gitalk copied to clipboard
Go泛型的坏例子
Go泛型的坏例子
Go 1.18发布了第一版的Go泛型之后,大家开始对Go泛型进行了深入的研究,今天翻译的这一篇,是加拿大的Xe Iaso刚出炉的一篇有趣的文章,对Go泛型的应用做了一些探索。
使用返回零值的函数时,输出的结果处有误。
Queue[T] 没看懂为什么不推荐使用的?坏在哪里?
翻译不太全,建议看原文 Crimes with Go Generics.
我感觉主要是因为复杂了,在 Go 里你有更简单、更常用的做法。
- Queue[T] 其实就是 channel ,所以没必要包一层
- Option[T] 在一个满是 nil 的语言里,用处不大。作者也指出文章里的实现太简单,需要更多的泛化、由官方实现才能实用(每个库都实现一个 Option,完全没有互操作性)
- Thunk[T] 就更复杂了(作者甚至写错了,然后被网友指出)
所以作者展示了泛型可以这样用,但不建议你这样滥用。