断断续续花了我一个多星期时间才写完,可以说是写得挺慢了,但也因此把目前泛型从里到外各种细节也都囊括了进去(如果仍有遗漏地话欢迎指出)
至于为什么要写这文章,这里摘抄下原文的序章:
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
欢迎大家指点~
![]() | 1 BBCCBB 2022-03-31 13:42:20 +08:00 学习了 |
![]() | 2 plutome 2022-03-31 13:57:16 +08:00 很详细了 |
3 NoKey 2022-03-31 14:29:38 +08:00 大佬,有比较好的 go 的教程么,目前做 java 开发,想学习一下 go |
![]() | 4 waising 2022-03-31 14:33:56 +08:00 。。。看到这个贴子前,我竟然已经在看 sf 里的文章了 |
![]() | 5 BeautifulSoap OP @NoKey 我是看的 the way to go ,有别的语言基础的话应该很快就能看上手了。有了基础就是写点项目然后遇到不会的直接搜对应的文章就行了。 the way to go 有中文: https://github.com/unknwon/the-way-to-go_ZH_CN |
![]() | 6 RedisMasterNode 2022-03-31 14:55:47 +08:00 仔细看了前面一些,写得挺好的加油 |
![]() | 7 proxytoworld 2022-03-31 14:56:49 +08:00 666 |
![]() | 8 fyooo 2022-03-31 15:16:11 +08:00 写的很棒,谢谢分享 |
![]() | 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 |
10 linxl 2022-03-31 16:41:46 +08:00 感谢分享,对于从没接触过泛型的我很友好。 |
![]() | 11 BeautifulSoap OP @EscYezi 多谢指点,虽然已经修正过一遍了但似乎还有点虫子和措辞的问题,晚上会再次修改一遍~ |
![]() | 12 Kisesy 2022-04-01 14:49:46 +08:00 4.2 动态判断变量的类型 这一节在参数前面用 any 或者 interface 转一下就可以断言了 if _, ok := any(arg).(string); ok { } |
![]() | 13 cityboy 2022-05-11 09:40:21 +08:00 写的很详细,好文章~ |
14 runtousa 2023-02-03 20:26:49 +08:00 op 现在工作用 go 了? |