哇靠,1.18 release! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Immortal

哇靠,1.18 release!

  •  1
     
  •   Immortal
    0x7a7a 2022 年 3 月 16 日 10286 次点击
    这是一个创建于 1501 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我先更为敬了
    终于出来了,不容易
    第 1 条附言    2022 年 3 月 17 日
    昨天看了一天文档和资料.
    感觉 generics 就像是 interface{}加强版,暂时没感受到对平时写代码会有特别大的提升,主要觉得实际使用场景并不会很多,一个项目估计就 10-20%的代码可能会用到,可能是我理解还不够深吧?
    比起 TS(平时主要写 Go 和 Ts,所以其他语言不太懂),感觉缺少了灵活性和表达能力,看以后发展吧.
    45 条回复    2022-03-22 17:50:38 +08:00
    Carseason
        1
    Carseason  
       2022 年 3 月 16 日
    赶紧冲
    Trim21
        2
    Trim21  
       2022 年 3 月 16 日
    发现 goland 对泛型支持有 bug ,能正常编译的代码报错,先降回 1.17 了
    Carseason
        4
    Carseason  
       2022 年 3 月 16 日
    @Trim21 可以啊
    Trim21
        5
    Trim21  
       2022 年 3 月 16 日
    @Carseason #4 哎,试了一下现在这个写法的确可以。想当然了。编辑了一下,现在应该能触发 goland 的 bug 了
    Trim21
        6
    Trim21  
       2022 年 3 月 16 日
    type alias 或者 type definition 都能触发
    Carseason
        7
    Carseason  
       2022 年 3 月 16 日
    @Trim21 sogo 我用的 vscode 你 gomod 指定 1.18 了么?
    Trim21
        8
    Trim21  
       2022 年 3 月 16 日 via Android
    @Carseason 对,不指定 1.18 也编译不了…
    iyear
        9
    iyear  
       2022 年 3 月 16 日
    终于发了,看着 milestone 一点点到底
    DonaidTrump
        10
    DonaidTrump  
       2022 年 3 月 16 日
    范型也太丑了
    FakNoCNName
        11
    FakNoCNName  
       2022 年 3 月 16 日
    本来大项目的代码就不容易阅读,这下子到处抽象更晦涩了
    darksword21
        12
    darksword21  
    PRO
       2022 年 3 月 16 日 via iPhone
    起床更
    hingbong
        13
    hingbong  
       2022 年 3 月 16 日
    @Trim21 就是 1.18 才支持泛型的,正常,idea 2022.1eap 上没复现 bug
    eudore
        14
    eudore  
       2022 年 3 月 16 日
    升级完成
    macscsbf
        15
    macscsbf  
       2022 年 3 月 16 日
    goland 还有些 bug, 这里放在 goland 里会报红 但是我能编译
    type Binding[S types.Stringer, P any] interface {
    Name() S
    Bind(P, any) error
    }

    type testBinding[S types.Stringer, P *http.Request] struct {
    }

    func NewTestBinding[S types.Stringer, P *http.Request]() Binding[S, P] {
    return &testBinding[S, P]{}
    }

    func (t testBinding[S, P]) Name() S {
    return "name"
    }

    func (t testBinding[S, P]) Bind(p P, a any) error {
    return nil
    }
    macscsbf
        16
    macscsbf  
       2022 年 3 月 16 日
    types.Stringer 是自定义的一个类型
    type Stringer interface {
    ~string
    }
    macscsbf
        17
    macscsbf  
       2022 年 3 月 16 日
    func IndexOf[T comparable](collection []T, target T) int {
    for i, t := range collection {
    if t == target {
    return i
    }
    }
    return -1
    }
    zhs227
        18
    zhs227  
       2022 年 3 月 16 日
    goland 一般要再等一个版本更新才能解决提示报错问题。
    rrfeng
        19
    rrfeng  
       2022 年 3 月 16 日   1
    不是 gopls 的 bug 吗
    wzw
        20
    wzw  
       2022 年 3 月 16 日 via iPhone
    @zhs227 等新版本再试试 1.18
    Hanggi
        21
    Hanggi  
       2022 年 3 月 16 日
    感觉第三方库又要爆发一波了
    hingbong
        22
    hingbong  
       2022 年 3 月 16 日
    以上 bug 在 2022.1 eap 均无复现,看来适配了
    Mohanson
        23
    Mohanson  
       2022 年 3 月 16 日
    看了 release note, 我的关注点全在 fuzz 上了, generics 反而感觉没什么亮点
    yukunyi
        24
    yukunyi  
       2022 年 3 月 16 日
    马上升级试试~~~
    xlsepiphone
        25
    xlsepiphone  
       2022 年 3 月 16 日
    brew 还没更新,懒得自己手动下载。
    keepeye
        26
    keepeye  
       2022 年 3 月 16 日
    从 rc1 就开始用了 并未遇到什么 bug
    yongchiu
        27
    yongchiu  
       2022 年 3 月 16 日
    goland 怎么升级了,我的一直无法升级到最新版本
    acoldfox
        28
    acoldfox  
       2022 年 3 月 16 日
    我们鼓励在有意义的地方使用泛型,但在生产环境中部署泛型代码时,请谨慎行事
    tairan2006
        29
    tairan2006  
       2022 年 3 月 16 日
    有点坑,目前还不推荐在生产环境使用,估计要等 1.19
    components
        30
    components  
       2022 年 3 月 16 日
    @yongchiu https://www.jetbrains.com/toolbox-app/
    用 jetbrains toolbox 管理你下载的 app
    xnotepad
        31
    xnotepad  
       2022 年 3 月 16 日
    goland 目前是有问题,只能暂时换回 vscode 用用了
    MoYi123
        32
    MoYi123  
       2022 年 3 月 16 日
    有没有大哥教一下,为什么这样写是不对的?

    package main

    import "fmt"

    func Max[T comparable](x, y T) T {
    if x > y {
    return x
    }
    return y
    }

    func main() {
    fmt.Println(Max(1, 2))
    }


    .\draft.go:6:5: invalid operation: x > y (type parameter T is not comparable with >)
    keepeye
        33
    keepeye  
       2022 年 3 月 16 日   1
    @MoYi123 comparable 不能用于比较大小,你得自己定义一个类型哦。。比如:

    type NumOrdered interface {
    int | int32 | int64 | float32 | float64
    }
    BrettD
        34
    BrettD  
       2022 年 3 月 16 日 via iPhone   1
    @MoYi123 comparable 是比较等于或不等于,比较大小应该是 ordered 吧
    bthulu
        35
    bthulu  
       2022 年 3 月 16 日   1
    梦想破灭了, 为什么要加泛型呢, 不是说好的不加的么, 骗子
    useben
        36
    useben  
       2022 年 3 月 16 日
    2021.3.3goland 还不支持 go workspace.....
    kongkongyzt
        37
    kongkongyzt  
       2022 年 3 月 16 日
    @useben +1....这个特性对我还挺重要的
    tairan2006
        38
    tairan2006  
       2022 年 3 月 16 日
    @useben 测一下 eap 支持不
    jefferycao
        39
    jefferycao  
       2022 年 3 月 16 日
    看到有说范型丑..难道 interface 就不丑么
    Akitora
        40
    Akitora  
       2022 年 3 月 17 日
    Goland 还会报错...
    ```go
    func Contain[T comparable](a []T, b T) bool {
    for _, t := range a {
    if t == b {
    return true
    }
    }
    return false
    }

    ```
    seakingii
        41
    seakingii  
       2022 年 3 月 17 日
    我喜欢泛型,赶紧升级一下
    Oktfolio
        42
    Oktfolio  
       2022 年 3 月 17 日
    @xlsepiphone homebrew 看了下,每次 go 更新大版本都要延迟很久,各种依赖 go 的包都要改版本号...
    seakingii
        43
    seakingii  
       2022 年 3 月 17 日
    升级前,GOLAND 会提示错误,但实际能运行
    升级到 2022.1 EAP 后,不提示错误了
    wwqgtxx
        44
    wwqgtxx  
       2022 年 3 月 18 日
    golang2021.3.4 发布了,已经不提示错误了
    useben
        45
    useben  
       2022 年 3 月 22 日
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2778 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 94ms UTC 10:06 PVG 18:06 LAX 03:06 JFK 06:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86