Golang Go语言终于要搞泛型了 (1.18 版本)

发布于 1周前 作者 sinazl 来自 Go语言

Golang Go语言终于要搞泛型了 (1.18 版本)

groups.google.com/g/golang-dev/c/iuB22_G9Kbo/m/7B1jd1I3BQAJ

"Go 1.18 will include support for generics."

27 回复

更多关于Golang Go语言终于要搞泛型了 (1.18 版本)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


是啊,不过确实火星了

不一样吧, 看那个 thread 还在讨论要不要加. 这里说是确定要加了.

没泛型有啥干不了的吗?

这里面提到一点蛮有意思的, 说因为大家都没用过 go 的泛型, 所以官方文档也没法给出特别好的最佳实践.

we can’t provide anything as prescriptive about style and best practices. We simply don’t know them yet.

都能干,只是要多干猛干

范型意味着多了一种抽象方式,写大型代码更简单了(抽象的角度),阅读大型代码更困难了(理解抽象)。

希望不要弄个假泛型或者半吊子泛。

什么样子是假泛型?

感觉好像在说 JAVA

这个提法一般特指 java 的泛型擦除且类型系统表达力很弱
因为同样是擦除的 typescript 和 Haskell 好像没人说它们是假泛型🐶

旧新闻了, 我发的这个是新的. 今天出的.

1.18 很早就计划上泛型的, 这个讨论只是说 1.18 的版本不会把 go 的内部库改成泛型版本, 等大家都在使用了, 有了实践之后再修改

要泛型?那大家来用 C#吧

通俗来说,编译时进行类型展开的做法是真泛型,运行时把类型退化到 top type 叫做假泛型。

岂不违背大道至简原则?

#5 没有泛型就少了很多好用的工具类库。比如 java 里大量的集合操作类。

告诉你个秘密,Go 1.17 已经可以通过 flag 开启范型了(只不过不能 export )

https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md

<br>This is the design for adding generic programming using type parameters to the Go language. This design has been proposed and accepted as a future language change. We currently expect that this change will be available in the Go 1.18 release in early 2022.<br>

靠来晚了,被楼上老哥抢先了。偷偷跟你们说个秘密,go 1.17 就支持泛型了。编译的时候加上-gcflags=-G=3 这个 flag 就能编译有范型的代码了

golang 官方应该没有提出过这个原则吧,网友戏言岂可当真。



Less is exponentially more – Rob Pike

针对“Golang Go语言终于要搞泛型了(1.18 版本)”这一帖子,作为IT领域GO语言方面的专家,以下是我的专业回复:

确实,Golang 1.18版本引入了泛型这一重大特性,这是Go语言诞生以来的一次历史性更新。泛型的引入旨在提高代码的复用性和安全性,通过类型参数和类型约束,开发者可以编写更简洁、更通用的代码。

在1.18版本之前,Go语言主要通过反射来实现类似泛型的功能,但这种方式相对繁琐且不够安全。而泛型的加入,则使得开发者可以在编译时就确定类型参数,从而避免了反射带来的性能开销和类型安全问题。

此外,Go 1.18版本的泛型实现也借鉴了其他语言的优秀特性,并结合Go语言自身的特点进行了优化。例如,Go的泛型是基于编译器实现的,这既保证了类型安全,又避免了运行时的性能损耗。

总的来说,Golang 1.18版本的泛型特性是一个值得期待的更新,它将为Go语言开发者带来更加高效、安全的编程体验。如果你对泛型感兴趣,建议查阅官方文档或相关教程,以更深入地了解这一特性的使用方法和注意事项。

回到顶部