V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Jooooooooo
V2EX  ›  Go 编程语言

Go 终于要搞泛型了 (1.18 版本)

  •  
  •   Jooooooooo · 2021-10-28 15:51:59 +08:00 · 4883 次点击
    这是一个创建于 1151 天前的主题,其中的信息可能已经有所发展或是发生改变。

    groups.google.com/g/golang-dev/c/iuB22_G9Kbo/m/7B1jd1I3BQAJ

    "Go 1.18 will include support for generics."

    26 条回复    2021-10-29 08:44:31 +08:00
    iyear
        1
    iyear  
       2021-10-28 15:54:10 +08:00
    kiripeng
        2
    kiripeng  
       2021-10-28 15:55:16 +08:00
    是啊,不过确实火星了
    Jooooooooo
        3
    Jooooooooo  
    OP
       2021-10-28 15:58:01 +08:00
    @iyear 不一样吧, 看那个 thread 还在讨论要不要加. 这里说是确定要加了.
    iyear
        4
    iyear  
       2021-10-28 16:04:07 +08:00
    @Jooooooooo #3 没细看😂
    shyrock
        5
    shyrock  
       2021-10-28 16:09:21 +08:00
    没泛型有啥干不了的吗?
    Jooooooooo
        6
    Jooooooooo  
    OP
       2021-10-28 16:10:06 +08:00
    这里面提到一点蛮有意思的, 说因为大家都没用过 go 的泛型, 所以官方文档也没法给出特别好的最佳实践.

    we can't provide anything as prescriptive about style and best practices. We simply don't know them yet.
    SmiteChow
        7
    SmiteChow  
       2021-10-28 16:13:44 +08:00
    @shyrock 都能干,只是要多干猛干
    kidlj
        8
    kidlj  
       2021-10-28 16:14:48 +08:00
    范型意味着多了一种抽象方式,写大型代码更简单了(抽象的角度),阅读大型代码更困难了(理解抽象)。
    defage
        9
    defage  
       2021-10-28 16:35:51 +08:00
    希望不要弄个假泛型或者半吊子泛。
    janxin
        10
    janxin  
       2021-10-28 16:41:08 +08:00
    @defage 什么样子是假泛型?
    aababc
        11
    aababc  
       2021-10-28 17:01:41 +08:00
    @janxin 感觉好像在说 JAVA
    darknoll
        12
    darknoll  
       2021-10-28 17:04:56 +08:00
    @defage 举个例子
    CodeCodeStudy
        13
    CodeCodeStudy  
       2021-10-28 17:15:10 +08:00
    Go 语言之父:不要在 Go 1.18 标准库中使用泛型
    https://www.oschina.net/news/164554/do-not-change-the-libraries-in-1-18
    Leviathann
        14
    Leviathann  
       2021-10-28 17:19:49 +08:00   ❤️ 1
    @darknoll 这个提法一般特指 java 的泛型擦除且类型系统表达力很弱
    因为同样是擦除的 typescript 和 Haskell 好像没人说它们是假泛型🐶
    Jooooooooo
        15
    Jooooooooo  
    OP
       2021-10-28 17:29:37 +08:00
    @CodeCodeStudy 旧新闻了, 我发的这个是新的. 今天出的.
    wingoo
        16
    wingoo  
       2021-10-28 17:58:55 +08:00
    1.18 很早就计划上泛型的, 这个讨论只是说 1.18 的版本不会把 go 的内部库改成泛型版本, 等大家都在使用了, 有了实践之后再修改
    INCerry
        17
    INCerry  
       2021-10-28 18:17:57 +08:00
    要泛型?那大家来用 C#吧
    iamzuoxinyu
        18
    iamzuoxinyu  
       2021-10-28 18:56:56 +08:00   ❤️ 1
    @janxin 通俗来说,**编译时**进行类型展开的做法是真泛型,**运行时**把类型退化到 top type 叫做假泛型。
    sagaxu
        19
    sagaxu  
       2021-10-28 19:09:15 +08:00 via Android   ❤️ 3
    岂不违背大道至简原则?
    EscYezi
        20
    EscYezi  
       2021-10-28 22:08:13 +08:00 via iPhone
    @shyrock #5 没有泛型就少了很多好用的工具类库。比如 java 里大量的集合操作类。
    SingeeKing
        21
    SingeeKing  
       2021-10-28 23:08:18 +08:00
    告诉你个秘密,Go 1.17 已经可以通过 flag 开启范型了(只不过不能 export )
    24bit
        22
    24bit  
       2021-10-28 23:15:49 +08:00
    https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md

    ```
    This is the design for adding generic programming using type parameters to the Go language. This design has been proposed and accepted as a future language change. We currently expect that this change will be available in the Go 1.18 release in early 2022.
    ```
    BeautifulSoap
        23
    BeautifulSoap  
       2021-10-28 23:23:48 +08:00
    靠来晚了,被楼上老哥抢先了。偷偷跟你们说个秘密,go 1.17 就支持泛型了。编译的时候加上-gcflags=-G=3 这个 flag 就能编译有范型的代码了
    cmdOptionKana
        24
    cmdOptionKana  
       2021-10-28 23:47:03 +08:00
    @sagaxu golang 官方应该没有提出过这个原则吧,网友戏言岂可当真。
    SorcererXW
        25
    SorcererXW  
       2021-10-29 08:13:21 +08:00
    @cmdOptionKana

    Less is exponentially more -- Rob Pike
    defage
        26
    defage  
       2021-10-29 08:44:31 +08:00
    @janxin 请看 Java
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   875 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:43 · PVG 05:43 · LAX 13:43 · JFK 16:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.