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

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

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

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

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

    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   ·   实用小工具   ·   5847 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:00 · PVG 10:00 · LAX 18:00 · JFK 21:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.