Go 终于要搞泛型了 (1.18 版本) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Jooooooooo

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

  •  
  •   Jooooooooo 2021 年 10 月 28 日 5326 次点击
    这是一个创建于 1641 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 日
    你火星了
    t/807840
    kiripeng
        2
    kiripeng  
       2021 年 10 月 28 日
    是啊,不过确实火星了
    Jooooooooo
        3
    Jooooooooo  
    OP
       2021 年 10 月 28 日
    @iyear 不一样吧, 看那个 thread 还在讨论要不要加. 这里说是确定要加了.
    iyear
        4
    iyear  
       2021 年 10 月 28 日
    @Jooooooooo #3 没细看
    shyrock
        5
    shyrock  
       2021 年 10 月 28 日
    没泛型有啥干不了的吗?
    Jooooooooo
        6
    Jooooooooo  
    OP
       2021 年 10 月 28 日
    这里面提到一点蛮有意思的, 说因为大家都没用过 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 日
    @shyrock 都能干,只是要多干猛干
    kidlj
        8
    kidlj  
       2021 年 10 月 28 日
    范型意味着多了一种抽象方式,写大型代码更简单了(抽象的角度),阅读大型代码更困难了(理解抽象)。
    defage
        9
    defage  
       2021 年 10 月 28 日
    希望不要弄个假泛型或者半吊子泛。
    janxin
        10
    janxin  
       2021 年 10 月 28 日
    @defage 什么样子是假泛型?
    aababc
        11
    aababc  
       2021 年 10 月 28 日
    @janxin 感觉好像在说 JAVA
    darknoll
        12
    darknoll  
       2021 年 10 月 28 日
    @defage 举个例子
    CodeCodeStudy
        13
    CodeCodeStudy  
       2021 年 10 月 28 日
    Go 语言之父:不要在 Go 1.18 标准库中使用泛型
    https://www.oschina.net/news/164554/do-not-change-the-libraries-in-1-18
    Leviathann
        14
    Leviathann  
       2021 年 10 月 28 日   1
    @darknoll 这个提法一般特指 java 的泛型擦除且类型系统表达力很弱
    因为同样是擦除的 typescript 和 Haskell 好像没人说它们是假泛型
    td width="48" valign="top" align="center">Jooooooooo
        15
    Jooooooooo  
    OP
       2021 年 10 月 28 日
    @CodeCodeStudy 旧新闻了, 我发的这个是新的. 今天出的.
    wingoo
        16
    wingoo  
       2021 年 10 月 28 日
    1.18 很早就计划上泛型的, 这个讨论只是说 1.18 的版本不会把 go 的内部库改成泛型版本, 等大家都在使用了, 有了实践之后再修改
    INCerry
        17
    INCerry  
       2021 年 10 月 28 日
    要泛型?那大家来用 C#吧
    iamzuoxinyu
        18
    iamzuoxinyu  
       2021 年 10 月 28 日   1
    @janxin 通俗来说,**编译时**进行类型展开的做法是真泛型,**运行时**把类型退化到 top type 叫做假泛型。
    sagaxu
        19
    sagaxu  
       2021 年 10 月 28 日 via Android   3
    岂不违背大道至简原则?
    EscYezi
        20
    EscYezi  
       2021 年 10 月 28 日 via iPhone
    @shyrock #5 没有泛型就少了很多好用的工具类库。比如 java 里大量的集合操作类。
    SingeeKing
        21
    SingeeKing  
    PRO
       2021 年 10 月 28 日
    告诉你个秘密,Go 1.17 已经可以通过 flag 开启范型了(只不过不能 export )
    24bit
        22
    24bit  
       2021 年 10 月 28 日
    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 日
    靠来晚了,被楼上老哥抢先了。偷偷跟你们说个秘密,go 1.17 就支持泛型了。编译的时候加上-gcflags=-G=3 这个 flag 就能编译有范型的代码了
    cmdOptionKana
        24
    cmdOptionKana  
       2021 年 10 月 28 日
    @sagaxu golang 官方应该没有提出过这个原则吧,网友戏言岂可当真。
    SorcererXW
        25
    SorcererXW  
       2021 年 10 月 29 日
    @cmdOptionKana

    Less is exponentially more -- Rob Pike
    defage
        26
    defage  
       2021 年 10 月 29 日
    @janxin 请看 Java
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2850 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 144ms UTC 12:45 PVG 20:45 LAX 05:45 JFK 08:45
    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