Golang Go语言中目前泛型的最佳解决方法是?

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

Golang Go语言中目前泛型的最佳解决方法是?
null

43 回复

没有最佳,只有这个:interface{}

不过一般人不写框架,其实需要用到泛型的地方很少了。

更多关于Golang Go语言中目前泛型的最佳解决方法是?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


当然是有最佳的,就是换 Java

不是说 go2 会加上范型么,一致等着呢

传闻今年内实现

interface 加 reflect

不存在的,短期也不会实现,要么换语言要么忍

不存在的,短期内不要奢望这个特性,提高性能还是 go 开发团队首先要处理的,除非有一个能保证表达能力和性能的泛型方案出来,否则一直鸽着这个特性的

我等了一年,只能选择离开,唯一割舍不下的是 goroutine

想问下不支持函数重载,泛型怎么用,我常用泛型的场景就是函数重载支持多类型

最佳解决办法就是不用泛型。。。
还是 python 爽啊,动态类型一时爽,一直动态一直爽

又不是自己写框架,用啥泛型啊,完全不需要

没泛型,interface 也不是不能用哈哈哈,只能等着了,而且泛型的需求好像也不是那么重要

用泛型的场景多吗?

写一些公用库或者框架的时候泛型满重要的

昨天写包装接口请求时遇到这个问题。好像只能用 interface{}解决 https://gist.github.com/Kila2/789a84167b6c012147f621776c78a718

基本没用过泛型,绝大部分场景用不到,如果实在是要用,建议换个语言。没必要逼的 go 支持这个特性,每个语言都有自己的适用场景,指望一个语言变成全能不太现实。

要灵活可以用 reflect 包,基本就是门动态语言了
要类型安全可以用代码分析和生成,有一点门槛
泛型可以解决上面两个的一些缺点,但也没法替代

我宁愿多写几个一样的函数也不想看到 interface{} 满天飞

最终变成 c++?

没有代码洁癖 有没有泛型无所谓

喜欢 routine 为什么不用 kotlin 范型也有

interface{} 可以理解为运行时的泛型,这里有性能开销。
编译时的泛型,一起坐等 go2 吧。

最后改着改着,突然发现这不就是 php 嘛。

然后号称世界上最好的语言吗 😄

PHP 原生可不支持这么高的并发。

interface 是 CPP 里面的 RTTI
这是被所有 CPP 程序员看作垃圾的东西

比较废键盘。

目前好像是有这个趋势。不过这好像会导致战争。

#11 泛型和重载有什么关系?

interface{} 最坑的是判断 nil 唉

#32 写泛型不就是在编译时为类型生成方法吗,既然如此同名方法不可避免,这个应该是大部分使用场景吧

无脑 interface{} ,性能有要求用代码生成 go generate

换语言

希望楼主及有同样想法的尽早放弃这个想法

如果明确自己想要的东西,那么一般用不到 interface{} 就是要费尽把 struct 定义好。 不过很 base 的 struct 可能会有 interface{} 来解析 web 的数据,比如像定义一个 type Ret struct { Code: int Data:interface{} }

在Golang(Go语言)中,关于泛型的最佳解决方法,自Go 1.18版本起,官方引入了泛型支持,这标志着Go语言在类型系统上的一个重要进步。在此之前,Go语言主要通过接口和空接口(interface{})来实现一定程度的泛型功能,但这种方法较为笨拙且运行时开销较大。

Go 1.18引入的泛型特性允许开发者定义类型参数化的函数、类型和结构体,从而能够编写更加通用和可复用的代码。这种解决方案的优势在于:

  1. 类型安全:泛型在编译时检查类型,避免了运行时类型断言的开销和潜在错误。
  2. 代码复用:通过类型参数,可以编写一次代码,适用于多种类型,提高了代码的复用性和可维护性。
  3. 性能优化:泛型支持允许编译器在编译时进行更多优化,生成更加高效的代码。

使用泛型时,开发者需要注意避免过度泛化,以免增加代码的复杂性和编译时间。同时,由于Go语言的泛型实现相对较晚,一些高级特性或最佳实践可能仍在探索和完善中。

综上所述,Go语言目前的泛型最佳解决方法是利用Go 1.18及以上版本提供的泛型特性,通过定义类型参数化的函数、类型和结构体来实现泛型编程。这不仅能够提高代码的类型安全性和复用性,还能带来性能上的优化。

回到顶部