写了篇全面介绍 Go1.18 泛型的文章,可能是目前介绍泛型介绍最详细的文章之一 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
BeautifulSoap
V2EX    Go 编程语言 div class="sep10">

写了篇全面介绍 Go1.18 泛型的文章,可能是目前介绍泛型介绍最详细的文章之一

  •  3
     
  •   BeautifulSoap 2022-03-31 13:29:16 +08:00 3447 次点击
    这是一个创建于 1289 天前的主题,其中的信息可能已经有所发展或是发生改变。

    断断续续花了我一个多星期时间才写完,可以说是写得挺慢了,但也因此把目前泛型从里到外各种细节也都囊括了进去(如果仍有遗漏地话欢迎指出)

    至于为什么要写这文章,这里摘抄下原文的序章:

    2022 年 3 月 15 日,争议非常大但同时也备受期待的泛型终于伴随着 Go1.18 发布了。

    可是因为 Go 对泛型的支持时间跨度太大,有非常多的以“泛型”为关键字的文章都是在介绍 Go1.18 之前的旧泛型提案或者设计。而很多设计最终在 Go1.18 中被废弃或发生了更改。并且很多介绍 Go1.18 泛型的文章(包括官方的)都过于简单,并没对 Go 的泛型做完整的介绍,也没让大家意识到这次 Go 引入泛型给语言增加了多少复杂度(当然也可能单纯是我没搜到更好的文章)

    出于这些原因,我决定参考 The Go Programming Language Specification ,写一篇比较完整系统介绍 Go1.18 泛型的文章。这篇文章可能是目前介绍 Go 泛型比较全面的文章之一了

    因为我实在是懒得维护个人博客(手上一堆 vps 和一个独服但没那心思去打理),所以文章选择发在博客平台了,今后有文章也会发在各种平台上(博客园似乎也挺不错得,今后会考虑做一个备选的归档库):

    https://juejin.cn/post/7080938405449695268

    https://segmentfault.com/a/1190000041634906

    欢迎大家指点~

    14 条回复    2023-02-03 20:26:49 +08:00
    BBCCBB
        1
    BBCCBB  
       2022-03-31 13:42:20 +08:00
    学习了
    plutome
        2
    plutome  
       2022-03-31 13:57:16 +08:00
    很详细了
    NoKey
        3
    NoKey  
       2022-03-31 14:29:38 +08:00
    大佬,有比较好的 go 的教程么,目前做 java 开发,想学习一下 go
    waising
        4
    waising  
       2022-03-31 14:33:56 +08:00
    。。。看到这个贴子前,我竟然已经在看 sf 里的文章了
    BeautifulSoap
        5
    BeautifulSoap  
    OP
       2022-03-31 14:37:45 +08:00
    @NoKey 我是看的 the way to go ,有别的语言基础的话应该很快就能看上手了。有了基础就是写点项目然后遇到不会的直接搜对应的文章就行了。

    the way to go 有中文:

    https://github.com/unknwon/the-way-to-go_ZH_CN
    RedisMasterNode
        6
    RedisMasterNode  
       2022-03-31 14:55:47 +08:00
    仔细看了前面一些,写得挺好的加油
    proxytoworld
        7
    proxytoworld  
       2022-03-31 14:56:49 +08:00
    666
    fyooo
        8
    fyooo  
       2022-03-31 15:16:11 +08:00
    写的很棒,谢谢分享
    EscYezi
        9
    EscYezi  
       2022-03-31 15:57:57 +08:00 via iPhone
    抓个虫,掘金上的文章
    type WowStruct[int, []int] struct {
    Data []iont
    MaxValue int
    MinValue int
    }
    iont 应该是 int
    linxl
        10
    linxl  
       2022-03-31 16:41:46 +08:00
    感谢分享,对于从没接触过泛型的我很友好。
    BeautifulSoap
        11
    BeautifulSoap  
    OP
       2022-03-31 17:10:41 +08:00
    @EscYezi 多谢指点,虽然已经修正过一遍了但似乎还有点虫子和措辞的问题,晚上会再次修改一遍~
    Kisesy
        12
    Kisesy  
       2022-04-01 14:49:46 +08:00
    4.2 动态判断变量的类型 这一节在参数前面用 any 或者 interface 转一下就可以断言了

    if _, ok := any(arg).(string); ok {
    }
    cityboy
        13
    cityboy  
       2022-05-11 09:40:21 +08:00
    写的很详细,好文章~
    runtousa
        14
    runtousa  
       2023-02-03 20:26:49 +08:00
    op 现在工作用 go 了?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     943 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 22:04 PVG 06:04 LAX 15:04 JFK 18:04
    Do have faith in what you're doing.
    ubao 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