Go1.23 新特性:终于可以指定内存布局了,新库 structs.HostLayout!

8 月 26 日
阅读 2 分钟
576
大家好,我是煎鱼。在 Go 这一门编程语言中,我们时常会看到一些 Go 面试题或结构体的知识讲解,主要是针对内存对齐这一块的知识点。这次 Go1.23 新版本中也针对这块进行了一些补全,分享给大家,一起学习和进步!背景Go 在对于结构体(struct)的布局规则描述得相当简略。在现实环境中,大多数都是由需要准备面试的同学...

Go1.23 新特性:试图禁用 //go:linkname,建立新的握手机制!

8 月 12 日
阅读 3 分钟
355
大家好,我是煎鱼。Go1.23 的新版本特性中,还有一些声势浩大的变更,引发了社区的一些争议和讨论。今天主要给大家分享 //go:linkname 变更的前因后果和新特性。背景在今年 5 月份,rsc 不知道是看到了什么项目在乱搞什么骚操作,触发了他的 “逆鳞”。直接反手光速敲出了以下提案:他发现的问题是:目前存在过度使用 //go...

Go1.23 新特性:slices、panic、cookie 等函数改进,人效提高了!

8 月 7 日
阅读 4 分钟
999
这是一个今年(2024 年)才提出的新提案,原提案作者提供给功能介绍时,还给出了其他语言的相关案例。很快受到了 Go 官方团队的响应并通过。

Go1.23 新特性:time.Reset 解决了过期时间值的天坑!

8 月 5 日
阅读 2 分钟
391
大家好,我是煎鱼在 Go1.23 以前,标准库 time 除了 After 方法外。还有另外一个问题,那就是 Stop 和 Reset 方法不太靠谱。以至于大家在一些特殊场景下总是这踩点坑,那踩点坑。无论如何,解决了就值得我们给 rsc 鼓掌!问题背景最早的反馈来自 2016 年的 time: document proper usage of Timer.Stop,随后在 2020 年终...

Go1.23 新特性:花了近 10 年,time.After 终于不泄漏了!

8 月 2 日
阅读 3 分钟
996
大家好,我是煎鱼。好多年前,我写过 timer.After 的使用和坑。Go 这么多年以来这块一直有内存泄露。有的同学或多或少都有遇到过。最近 Go1.23 即将正式发布,Go 核心团队负责人 rsc 花了将近 10 年的努力,终于把这个问题修复了。值得我们关注!timer.After 是什么这是之前编写的部分,我测试验证了下。在 Go1.22 依然...

Go1.23 新特性:新标准库 unique,性能更好,开销更小!

8 月 2 日
阅读 4 分钟
464
大家好,我是煎鱼。Go1.23 吵来吵去的,现在已经基本尘埃落定了。在我开始写这个新版本特性系列时,Go1.23 rc2 已经发布了有一周多:今天我们分享的是新的标准库 unique 的介绍和快速入门。背景基于 Go unique 官方提案,我简化了一下内容。要做这个主要原因是:Go 缺乏运行时的驻留支持,这与其他语言存在差距。多年来...

Go micro/cli 很不专业,居然直接删库了!

7 月 31 日
阅读 2 分钟
389
在我朋友他们当年搭建微服务生态时,go-micro 是非常火的,也没有那么多其他 Go 框架的竞争对手。因此很多第三方库(例如:这次遇到是 sentinel 的库)有直接或间接依赖到他们。

发现了一个 Go 最小化日志系统的好轮子

7 月 18 日
阅读 4 分钟
437
这个新开源库 logdyhq/logdy-core 给自己打的标语是:“使用 Web 浏览器 UI 和低代码增强终端日志,节省 90% 的搜索和浏览日志的时间”。看着就很省钱,一下子就引起了我的关注。

rsc 给 Go 社区写了个 AI 机器人,他挺满意!

7 月 10 日
阅读 2 分钟
311
最近 AI 浪潮席卷,很多公司和程序员小伙伴都参与了进来。Go 团队也在这方面做了新的尝试。主要的方面是 Go GitHub issues 的参与。

为什么 Go 不像 Rust 那样使用 ? 来做错误处理?

6 月 19 日
阅读 1 分钟
480
大家好,我是煎鱼。Go 错误处理,一直是个必争之地。为什么不学 Rust 使用 ? 来解决错误处理的问题,也是大家非常好奇的地方。为此 Go 核心团队成员之一 @Robert Griesemer 给出了官方诠释和解答。以下为其解答的内容。Go 的设计非常注重可读性!我们希望即使是不熟悉该语言的人也能理解 Go 代码(这并不意味着每个名称...

Go 再次讨论 catch error 模型,官方回应现状

6 月 19 日
阅读 3 分钟
699
大家好,我是煎鱼。最近社区的同学和 Go 官方又因为错误处理的提案屡屡被否,发生了一些小的摩擦。也非常难得的看到核心团队成员首次表达了目前的态度和情况。基于此,我们今天进行该内容分享。紧跟 Go 官方最新进展。快速背景Go 的错误处理机制,主要是依赖于 if err != nil 的方式。因此在对函数做一定的封装后。代码...

Go 面试题:SliceHeader 隐藏陷阱

6 月 12 日
阅读 2 分钟
512
最近也是面试季+毕业季了,很多同学正在积极准备面试。尤其是很多同学,已经通过官网资料熟悉了 Go 基本语法,但没有太大把握。希望对一些常见的棘手面试问题做一些预习。

Go 新提案:用 #err 标识符去做错误处理!

6 月 6 日
阅读 2 分钟
476
前几天看 Reddit 社区里的讨论,发现 Go 这一门编程语言,错误处理永远是讨论的议题之一。本着追踪网友脑洞 Proposal 的基础上,周末看到个被反对比较多的 Go2 错误处理提案。

Go 还缺少什么,能让它更完美?

6 月 3 日
阅读 2 分钟
495
大家好,我是煎鱼。最近国外社区 reddit 对 Go 这一门编程语言发起了一次讨论,提问的标题是:“你们认为 Go 还缺少什么,能让它变得更完美?”。内容上主要是方向是:开发人员对 Go 中缺少什么的看法,希望在 Go 中看到什么特性,能够使得其比现在要更好。这些交流点,在日常读者群中也经常有同学提到。今天结合分享给大...

为什么 Go protoc 不支持注入标签?

6 月 3 日
阅读 3 分钟
568
其作者在最终对官方 protobuf 库最绝望的一个事情,莫过于他朝朝暮暮,但官方一直不愿支持的标签注入功能。这也是很多人使用 gogo/protobuf 的原因。

优秀开源项目 gogo/protobuf 已经凉了。。。

5 月 24 日
阅读 3 分钟
614
大家好,我是煎鱼。最近我有一个朋友在内部陆续推动一些内部更新时,发现一个比较震惊的事,就是一个著名的 Go 开源项目居然已经陨落有两年多了。突然发现自己当年没能及时发现...似乎完全被当时 golang/protobuf v2 的热度压没了。尴尬得很。gogo/protobuf 发展和成熟相信大家对于 gogo/protobuf 这一个优秀的 Go 开源...

Google 内部 Go 的使用率有多少?

5 月 15 日
阅读 2 分钟
390
众所周知,Go 这一门编程语言的最大金主爸爸是 Google,Go 核心团队绝大部分也都在 Google 中工作,Google 为他们支付工资、福利等任何薪酬相关的内容。

Go1.0 到 1.22 的性能表现,提高了多少倍?

5 月 11 日
阅读 3 分钟
587
五一假期时看到 @Ben Hoyt 大佬分享的文章《Go performance from version 1.0 to 1.22》,分享了他在这么多年来一直坚持不懈的对 Go 进行性能测试的记载。

Go 未来方向:标准库 v2 改进的指导原则

5 月 10 日
阅读 2 分钟
617
在五一假期的第一天,Go 核心团队也没有闲着,@Russ Cox 直接在官方博客发布了《Evolving the Go Standard Library with math/rand/v2》这篇文章。

Google 如果把 Go 团队给裁了会怎么样?

5 月 8 日
阅读 2 分钟
458
节前有一则劲爆消息,Google 把 Python 基础团队和 flutter/dart 团队里相当多的开发人员给解雇了,据说可能是要换个城市重组(真是熟悉的 CY 套路)。

Google 孵化了 3 个 Go 安全库,推荐使用!

4 月 29 日
阅读 3 分钟
507
大家好,我是煎鱼。Google 作为一家用户体量很大的企业,有非常多的产品,经常会被黑客攻击或被拿来练手。因此其设计的产品、编程语言、工具库等都会要求考虑安全性相关的内容。例如:各种供应链攻击、CWE 等安全的查缺补漏等。我们作为用户(使用者),可以 “白嫖” 这些功能实现。直接复用在自家的业务上就可以了。这样...

Go 最大挑战、AI 方向、内部优先级?2024 H1 开发者报告发布

4 月 24 日
阅读 3 分钟
330
在这个月的月初,Go 官方公布了 1 月、2 月做的 Go 开发者调查结果。本次调查的主要关注点是:开发人员如何开始将 Go(或其他语言)用于 AI(人工智能)相关场景。以及正在学习 Go 或希望扩展 Go 技能的开发人员面临的特殊挑战有哪些。

Go 如何应对来自软件依赖的恶意攻击?

4 月 19 日
阅读 3 分钟
170
这一连串事件,不禁让我思考到 Go 是如何解决和防护攻击相关的问题。周末翻到了《How Go Mitigates Supply Chain Attacks》,基于此整理和调整后分享给大家。

Go 新提案:返回值应该明确使用或忽略?

4 月 16 日
阅读 3 分钟
273
之前在写 Go 代码时 IDE 经常会提示,团队内 CodeReview 也会遇到一些方法的返回值,处理不处理的问题。一开始大家还会讨论一下,久而久之基本也就麻木了。

Go 标准库的一个设计败笔:哨兵错误

4 月 11 日
阅读 3 分钟
685
大家好,我是煎鱼。在 Go 的历史发展中,总是有或多或少的坑。最近遇到一个跟错误类型定义和声明使用有关的小坑。翻了一圈 Go 社区里的争论,发现又是一个暂时无法解决的未解之坑。今天分享给大家,平时开发时也可以给自己避避坑。快速背景在 Go 里有一种错误类型的定义,官方叫做哨兵错误(Sentinel errors):哨兵错误...

Go 哪里没有做好?Rob Pike 深刻反思了

4 月 8 日
阅读 3 分钟
435
从历史背景来看,在 Go 诞生的那个年代,并发编程是一个比较新颖的理念。许多其他编程语言、论文甚至书籍都写过关于并发编程的内容。并发编程还没有成为主流思想。

Go 负责人 rsc 翻车,决定追加 godebug 行

3 月 27 日
阅读 3 分钟
722
上年我给大家分享过《加大力度!Go 将会增强 Go1 向后兼容性》,当时是 Go 核心团队负责人 @Russ Cox(下称:rsc)主导和推进的。

Go 团队近两年在做什么,AI 方面如何发力?

3 月 21 日
阅读 2 分钟
902
大家好,我是煎鱼。本文继续承接 @Sameer Ajmani 的回忆录《Go 和 Google、Cloud 融合的那么深,绝非偶然》,他现在作为 Google 工程总监 ,负责领导 Go 编程语言团队。本次也给出了 Go 这两年大的关键变动说明,更重要的是提及了 Go 计划在生成式 AI 方面的发力方向。今天由煎鱼结合分享一下,看看未来会发生什么变化。...

Go 错误处理:用 select-case 来解决这个难题?

3 月 14 日
阅读 2 分钟
340
日常看 Go 社区的一些新动态,发现大家对于错误处理的新提案是很积极。上次分享了一篇想要用 switch-case 来解决现状的新提案,不少同学认为不可行。

Go arena 民间库来了,可以手动管理内存!

3 月 12 日
阅读 4 分钟
496
上年我们有讨论过关于 Go arena 手动管理内存的相关提案。一开始还高歌猛进,但没想到后面由于严重的 API 问题(想把 arena 应用到其他的标准库中,但会引入大问题):