1
txx 2022-03-21 21:03:03 +08:00
如果 IDE 是 Goland 那需要切到 EAP 版本了,最新一个稳定版虽说支持 1.18 但还是有不少泛型相关的 lint bug...
|
2
airplayxcom 2022-03-21 21:16:55 +08:00
可以的很爽。消滅了不少冗餘代碼
|
3
janxin 2022-03-21 21:23:15 +08:00
不用泛型没有什么 bug
有用泛型的话,一些 linter 支持有问题 |
4
masterclock 2022-03-21 21:53:55 +08:00
还没用上泛型,不过 workspace 真香
|
5
BeautifulSoap 2022-03-21 21:59:56 +08:00
1. IDE 方面,goland EAP 对泛型的支持还有很多 bug ,该检测出的语法错误没有被检测出来,正确的语法被视为错误标红之类
2. 很多人没意识到这次的泛型给 Go 语言增加多少复杂度。Go1.18 为了支持泛型引入了一大堆新的概念,也对包括接口、类型之类已经存在的概念定义做了大幅修改,同时还引入了一大堆非常非常细碎的规则限制(细碎到很多 linter 都还没能做到正确检测) 3. 至于语言层面的 bug 因为才刚发布不久并没有遇到 4. 用泛型写数据结构、通用工具函数是真的爽 |
6
proxytoworld OP |
7
janxin 2022-03-21 22:11:38 +08:00
|
8
janxin 2022-03-21 22:18:49 +08:00
@BeautifulSoap 其实 2 的问题主要来源是 x/tools/go/ssa 的泛型支持,这个是目前各大 linter 支持泛型最大的 blocker 。
具体的 track 可以参考,从目前看甚至已经推迟到 1.19 了😂 https://github.com/golang/go/issues/48525 |
9
loading 2022-03-21 23:13:16 +08:00
因为我实在太菜不知道泛型具体用途和优点。
一般情况下,除非库都到某特性非用不可了,那时候我才会主动去为了语言某个特性去特意升级到某版本。 |
10
Maboroshii 2022-03-22 00:55:24 +08:00 via Android
还有点不习惯。
到时候看看主流的几个框架会不会使用泛型重写吧,看看他们是怎么写的。 |
12
sunwei0325 2022-03-22 09:30:16 +08:00
自己的项目爱咋折腾咋折腾, 公司的项目最好不要升, 你用了泛型就是绑架同事
|
13
x1aoYao 2022-03-22 09:35:46 +08:00
刚开始用上,写起来比以前舒服多了。
就是历史遗留的 map 和 slice 的泛型不在方括号内有点不统一 |
14
pkoukk 2022-03-22 09:43:15 +08:00
@loading 最常见的一个例子,你要去除某个 slice 中的重复项。这个 slice 可能是[]string ,可能是[]int ,可能是[]Int64 。。。
没有泛型的情况下,你要么给每一种数据类型写一个去重函数,要么传 interface{}进去,用反射做,这两种情况不管怎么写都蛋疼。 |
15
janxin 2022-03-22 10:56:57 +08:00
@sunwei0325 泛型怎么会绑架同事,能举个例子么...
|
16
sunwei0325 2022-03-22 11:41:36 +08:00
@janxin 暂时不想学新特性, 不想意想不到的事情耽误我正点下班 :)
|
17
datafeng 2022-03-22 15:01:42 +08:00
尝试了一下,MQTT 的库不兼容~~又退回 17 了~~
|
18
wwaayyaa 2022-03-22 15:10:38 +08:00
goland 的提示还不能完全识别,对于复杂的泛型定义,然后你在一些方法上面会遇到标红,但是实际跑测试没有问题。
如下 XXX[T ~map[K]V, K conparable, V any] 后来干脆改成简单的,也能正常工作。 XXX[ K conparable, V any] 还有一些不能支持的使用方法,对于结构体的方法,不能额外再返回新的类型,除非单独写一个普通的函数。 func(x XX[T]) Foo[T, K any](){} |
19
wwaayyaa 2022-03-22 15:11:25 +08:00
期待 1.19 ,上面提到的问题就据说会解决。
|
21
woohaha 2022-03-22 22:06:44 +08:00 1
自从 golang 出了 1.18 ,我就润去 kotlin 了
|
22
veightz 2022-03-31 13:11:35 +08:00
虽然升到了 18, 但是还没用上泛型语法.. 感觉还行...
|