Go泛型不支持泛型方法,这是一个悲伤的故事 (colobu.com)

【简介】

根据Go 泛型提案的描述,Go不支持泛型方法:No parameterized methods。主要原因Go泛型的处理是在编译的时候实现的,泛型方法在编译的时候,如果没有上下文的分析推断,很难判断泛型方案该如何实例化,甚至判断不了,导致目前(Go 1.18)Go实现中不支持泛型方案。

不过,泛型方法的缺失,多多少少给程序员带来一丝丝的忧伤的情绪,在一些场景之下,使用起来特别不方便。我最近看到了几个因为缺乏泛型方法导致的问题,在本文中总结一下,和大家探讨。

点击查看全文 >>

@技术头条 2022-05-06 23:15分享 / 原作者微博:@colobu / 0个评论
赞过的人: IT技术博客大学习
要不要再学学下面的文章?
与日俱进,在 Go 1.20 中这种高效转换的方式又变了 (colobu.com)
在 Go 1.19 的开发中, string.SliceHeader和string.StringHeader经历了一个生死存亡的争斗,这两个类型一度被标记为弃用(deprecated),但是这两个类型经常用在 slice of byte 和 string 高效互转的场景中,如果被标记为弃用,但是目前还没有可替代的方法,所以这两个类型又把弃用标记去掉了,如无意外,它们也会在 Go 1.20 再次被标记为弃用。
by @技术头条 2022-09-12 22:38 分享 查看详情
啊哈,一道有趣的Go并发题 (colobu.com)
今天一位同学给我出了一道并发题,作为在极客时间开了《GO并发编程实战课》的作者,居然一时间没有回答上来,惭愧啊,所以晚上专门研究了一下题目,给出几个实现方案供探讨。
by @技术头条 2022-09-03 23:26 分享 查看详情
如何继承自定义元素及其他JS中扩展新方法 (www.zhangxinxu.com)

相似内核但语义不同的Web组件该如何更高效的组织代码才能兼顾可维护性和可阅读性呢?如何在任意位置对已由的自定义元素组件进行方法或属性的扩展呢?一点实战经验分享,希望可以帮到大家的工作。

by @技术头条 2022-08-31 23:08 分享 查看详情
Go并发编程一年回顾 (colobu.com)
距离我2019年的深入Go并发编程研讨课发布也有一年时间了。在Gopher Beijing 2019相关演讲后我整理了这一个8小时的课程,对有志于深入理解Go并发编程原理的同学从深度和广度上提供一些帮助。当然一年来我也一直关注着Go并发编程的演变,并且补充了池和并发模式的一些例子。对于官方的并发库来说,这一年来又有哪些变化呢,让我们快速回顾一下。
by @技术头条 2022-08-19 00:06 分享 查看详情
flex-end为什么overflow无法滚动及解决方法 (www.zhangxinxu.com)

解释下为何 flex 布局中, flex-end 对齐不会触发 overflow 滚动效果,以及介绍解决方法,希望可以帮到遇到类似场景的人。
by @技术头条 2022-08-18 23:46 分享 查看详情
使用 Docker 搭建属于你自己的 Go Playground (soulteary.com)
本篇文章将介绍如何通过容器来部署属于你自己的 Go Playground。Go Playground 是 Golang 团队推出的在线语言工具,不论是对于初学者而言,还是对 Golang 开发者来说,它都不失为一个简单好用的神器。但由于种种原因,国内部分用户使用这个功能可能会遇到一些网络问题,而无法使用这个服务;以及出于运行代码包含一些“隐私”,而无奈放弃这个服务。
by @技术头条 2022-08-18 23:45 分享 查看详情
Go 垃圾回收器指南 (colobu.com)
本指南旨在帮助高级Go语言用户更好地了解Go语言垃圾回收器的使用成本。 它还提供了Go用户如何利用这些知识来提高应用程序的资源利用率的指导。 它并不假设你了解垃圾回收,但假设你熟悉Go语言。
by @技术头条 2022-08-18 23:21 分享 查看详情
Go: logrus性能提升 (wklken.me)
在Go项目中,logrus是一个相对完备的第三方日志库,用起来非常顺手, 特别是WithField/WithFields/WithError。我们开发一些对性能要求非常高的应用,例如API网关/权限服务等,需要记录流水日志,此时日志库的性能直接会影响整体接口性能,所以针对性地做了一些优化。
by @技术头条 2022-07-24 21:03 分享 查看详情
四舍五入在Go语言中为何如此困难 (mp.weixin.qq.com)
在 Go 语言中这似乎成为了难题,在 stackoverflow 上搜索 [go] Round 会存在大量相关提问,Go 1.10 开始才出现 math.Round 的身影,本以为 Round 的疑问就此结束,但是一看函数注释 Round returns the nearest integer, rounding half away from zero ,这是并不常用的 Round half away from zero 实现呀,说白了就是我们理解的 Round 阉割版,精度为 0 的 Round half up 实现,Round half away from zero 的存在是为了提供一种高效的通过二进制方法得结果,可以作为 Round 精度为 0 时的高效实现分支。
by @code小生 2022-07-24 11:01 分享 查看详情
故事点 vs. 人天 (insights.thoughtworks.cn)
大部分客户其实并不在乎你做的什么敏捷,他在乎的其实是你能不能在规定的时间内交付应该交付的软件。你告诉他我们用的是故事点估算,他会告诉你我不懂你们的故事点,你就告诉我这个功能几天做完。
by @Thoughtworks 2022-06-30 09:47 分享 查看详情