The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
Immortal

哇靠,1.18 release!

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

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

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

    ```
    seakingii
    seakingii
    Mar 17, 2022
    41
    我喜欢泛型,赶紧升级一下
    Oktfolio
    Oktfolio
    Mar 17, 2022
    42
    @xlsepiphone homebrew 看了下,每次 go 更新大版本都要延迟很久,各种依赖 go 的包都要改版本号...
    seakingii
    seakingii
    Mar 17, 2022
    43
    升级前,GOLAND 会提示错误,但实际能运行
    升级到 2022.1 EAP 后,不提示错误了
    wwqgtxx
    wwqgtxx
    Mar 18, 2022
    44
    golang2021.3.4 发布了,已经不提示错误了
    useben
    useben
    Mar 22, 2022
    45
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2637 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 159ms · UTC 04:25 · PVG 12:25 · LAX 20:25 · JFK 23:25
    ♥ Do have faith in what you're doing.