gitalk icon indicating copy to clipboard operation
gitalk copied to clipboard

Go泛型的坏例子

Open utterances-bot opened this issue 2 years ago • 3 comments

Go泛型的坏例子

Go 1.18发布了第一版的Go泛型之后,大家开始对Go泛型进行了深入的研究,今天翻译的这一篇,是加拿大的Xe Iaso刚出炉的一篇有趣的文章,对Go泛型的应用做了一些探索。

https://colobu.com/2022/04/26/Crimes-with-Go-Generics/

utterances-bot avatar Apr 26 '22 03:04 utterances-bot

使用返回零值的函数时,输出的结果处有误。

gh-liu avatar Apr 26 '22 03:04 gh-liu

Queue[T] 没看懂为什么不推荐使用的?坏在哪里?

0xleizhang avatar Nov 08 '22 03:11 0xleizhang

翻译不太全,建议看原文 Crimes with Go Generics.

我感觉主要是因为复杂了,在 Go 里你有更简单、更常用的做法。

  • Queue[T] 其实就是 channel ,所以没必要包一层
  • Option[T] 在一个满是 nil 的语言里,用处不大。作者也指出文章里的实现太简单,需要更多的泛化、由官方实现才能实用(每个库都实现一个 Option,完全没有互操作性)
  • Thunk[T] 就更复杂了(作者甚至写错了,然后被网友指出)

所以作者展示了泛型可以这样用,但不建议你这样滥用。

kauruus avatar Aug 24 '23 06:08 kauruus