V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Immortal

哇靠,1.18 release!

  •  1
     
  •   Immortal ·
    0x7a7a · Mar 16, 2022 · 10291 views
    This topic created in 1505 days ago, the information mentioned may be changed or developed.
    我先更为敬了🐶
    终于出来了,不容易
    Supplement 1  ·  Mar 17, 2022
    昨天看了一天文档和资料.
    感觉 generics 就像是 interface{}加强版,暂时没感受到对平时写代码会有特别大的提升,主要觉得实际使用场景并不会很多,一个项目估计就 10-20%的代码可能会用到,可能是我理解还不够深吧?
    比起 TS(平时主要写 Go 和 Ts,所以其他语言不太懂),感觉缺少了灵活性和表达能力,看以后发展吧.
    45 replies    2022-03-22 17:50:38 +08:00
    Carseason
        1
    Carseason  
       Mar 16, 2022
    赶紧冲
    Trim21
        2
    Trim21  
       Mar 16, 2022
    发现 goland 对泛型支持有 bug ,能正常编译的代码报错,先降回 1.17 了
    Carseason
        4
    Carseason  
       Mar 16, 2022
    @Trim21 可以啊
    Trim21
        5
    Trim21  
       Mar 16, 2022
    @Carseason #4 哎,试了一下现在这个写法的确可以。想当然了。编辑了一下,现在应该能触发 goland 的 bug 了
    Trim21
        6
    Trim21  
       Mar 16, 2022
    type alias 或者 type definition 都能触发
    Carseason
        7
    Carseason  
       Mar 16, 2022
    @Trim21 sogo 我用的 vscode 你 gomod 指定 1.18 了么?
    Trim21
        8
    Trim21  
       Mar 16, 2022 via Android
    @Carseason 对,不指定 1.18 也编译不了…
    iyear
        9
    iyear  
       Mar 16, 2022
    终于发了,看着 milestone 一点点到底
    DonaidTrump
        10
    DonaidTrump  
       Mar 16, 2022
    范型也太丑了
    FakNoCNName
        11
    FakNoCNName  
       Mar 16, 2022
    本来大项目的代码就不容易阅读,这下子到处抽象更晦涩了
    darksword21
        12
    darksword21  
    PRO
       Mar 16, 2022 via iPhone
    起床更
    hingbong
        13
    hingbong  
       Mar 16, 2022
    @Trim21 就是 1.18 才支持泛型的,正常,idea 2022.1eap 上没复现 bug
    eudore
        14
    eudore  
       Mar 16, 2022
    升级完成
    macscsbf
        15
    macscsbf  
       Mar 16, 2022
    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  
       Mar 16, 2022
    types.Stringer 是自定义的一个类型
    type Stringer interface {
    ~string
    }
    macscsbf
        17
    macscsbf  
       Mar 16, 2022
    func IndexOf[T comparable](collection []T, target T) int {
    for i, t := range collection {
    if t == target {
    return i
    }
    }
    return -1
    }
    zhs227
        18
    zhs227  
       Mar 16, 2022
    goland 一般要再等一个版本更新才能解决提示报错问题。
    rrfeng
        19
    rrfeng  
       Mar 16, 2022   ❤️ 1
    不是 gopls 的 bug 吗
    wzw
        20
    wzw  
       Mar 16, 2022 via iPhone
    @zhs227 等新版本再试试 1.18
    Hanggi
        21
    Hanggi  
       Mar 16, 2022
    感觉第三方库又要爆发一波了
    hingbong
        22
    hingbong  
       Mar 16, 2022
    以上 bug 在 2022.1 eap 均无复现,看来适配了
    Mohanson
        23
    Mohanson  
       Mar 16, 2022
    看了 release note, 我的关注点全在 fuzz 上了, generics 反而感觉没什么亮点
    yukunyi
        24
    yukunyi  
       Mar 16, 2022
    马上升级试试~~~
    xlsepiphone
        25
    xlsepiphone  
       Mar 16, 2022
    brew 还没更新,懒得自己手动下载。
    keepeye
        26
    keepeye  
       Mar 16, 2022
    从 rc1 就开始用了 并未遇到什么 bug
    yongchiu
        27
    yongchiu  
       Mar 16, 2022
    goland 怎么升级了,我的一直无法升级到最新版本
    acoldfox
        28
    acoldfox  
       Mar 16, 2022
    我们鼓励在有意义的地方使用泛型,但在生产环境中部署泛型代码时,请谨慎行事
    tairan2006
        29
    tairan2006  
       Mar 16, 2022
    有点坑,目前还不推荐在生产环境使用,估计要等 1.19
    components
        30
    components  
       Mar 16, 2022
    @yongchiu https://www.jetbrains.com/toolbox-app/
    用 jetbrains toolbox 管理你下载的 app
    xnotepad
        31
    xnotepad  
       Mar 16, 2022
    goland 目前是有问题,只能暂时换回 vscode 用用了
    MoYi123
        32
    MoYi123  
       Mar 16, 2022
    有没有大哥教一下,为什么这样写是不对的?

    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  
       Mar 16, 2022   ❤️ 1
    @MoYi123 comparable 不能用于比较大小,你得自己定义一个类型哦。。比如:

    type NumOrdered interface {
    int | int32 | int64 | float32 | float64
    }
    BrettD
        34
    BrettD  
       Mar 16, 2022 via iPhone   ❤️ 1
    @MoYi123 comparable 是比较等于或不等于,比较大小应该是 ordered 吧
    bthulu
        35
    bthulu  
       Mar 16, 2022   ❤️ 1
    梦想破灭了, 为什么要加泛型呢, 不是说好的不加的么, 骗子
    useben
        36
    useben  
       Mar 16, 2022
    2021.3.3goland 还不支持 go workspace.....
    kongkongyzt
        37
    kongkongyzt  
       Mar 16, 2022
    @useben +1....这个特性对我还挺重要的
    tairan2006
        38
    tairan2006  
       Mar 16, 2022
    @useben 测一下 eap 支持不
    jefferycao
        39
    jefferycao  
       Mar 16, 2022
    看到有说范型丑..难道 interface 就不丑么
    Akitora
        40
    Akitora  
       Mar 17, 2022
    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  
       Mar 17, 2022
    我喜欢泛型,赶紧升级一下
    Oktfolio
        42
    Oktfolio  
       Mar 17, 2022
    @xlsepiphone homebrew 看了下,每次 go 更新大版本都要延迟很久,各种依赖 go 的包都要改版本号...
    seakingii
        43
    seakingii  
       Mar 17, 2022
    升级前,GOLAND 会提示错误,但实际能运行
    升级到 2022.1 EAP 后,不提示错误了
    wwqgtxx
        44
    wwqgtxx  
       Mar 18, 2022
    golang2021.3.4 发布了,已经不提示错误了
    useben
        45
    useben  
       Mar 22, 2022
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1188 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 108ms · UTC 17:44 · PVG 01:44 · LAX 10:44 · JFK 13:44
    ♥ Do have faith in what you're doing.