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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Go deadcode:查找没意义的死代码,对于维护项目挺有用!

2 月 22 日
阅读 3 分钟
1.1k
还记得我前两年在深圳参加了个技术大会,其中一个议题是携程的一个大佬分享他在日常工作中,发现一大堆过时的无意义代码和逻辑,导致大家工作较为繁琐且较为辛苦的情况。

Go 更强的代码洁癖,可以把 gofmt 给换了!

2 月 21 日
阅读 4 分钟
1k
我们从一开始写 Go 代码和应用,就会被各种官方和民间教程,甚至 IDE 教导我们必须配一个 Gofmt 工具。他能够格式化 Go 程序的代码。会使用制表符表示缩进,空白表示对齐。

Go1.22 正式发布!包含语言变化、性能提高、标准库变动等重要特性

2 月 9 日
阅读 2 分钟
2.8k
大家好,我是煎鱼。今天 Go1.22 正式发布了!一早起来,还没出门就赶紧整理了本篇文章给大家。一起学习新版本!之前我还看进度预测 2 月中发布。没想到直接打脸。Go 核心团队成功赶在春节前发布了!真是有点猛。Go 1.22 新版本安装方式:Go1.22 包含多项重要的新功能和改进。以下是部分显著变化;完整列表请查看《Go 1.2...

Go1.22 新特性:性能提高、Trace 大修、工作区支持 vendor 等

2 月 4 日
阅读 2 分钟
688
Go 1.22 是能在 macOS 10.15 Catalina 上运行的最后一个版本。Go 1.23 需要 macOS 11 Big Sur 或更高版本。

Go1.22 新特性:终于增强 http.ServerMux 路由能力,将有更强的表现力!

1 月 24 日
阅读 3 分钟
1.1k
Go1.22 有一个比较重要的新特性,那就是基于提案《net/http: enhanced ServeMux routing》,增强了 http.ServerMux 的路由匹配能力。非常值得大家学习和关注。

Go1.22 新特性:新的 math/rand/v2 库,更快更规范了!

1 月 18 日
阅读 3 分钟
737
大家好,我是煎鱼。Go 首个标准准库的 v2 版本,来自 math/rand/v2 库。将在 Go1.22 正式发布和对外生产可用。本次由 Go 核心团队负责人 @Russ Cox 推动和发起。变动原因选择 math/rand 库做第一个 v2 标准库变动的原因如下:标准库里的 math/rand 的老毛病和待提高的地方太多了。例如:过时的生成器、缓慢的算法(性能...

Go1.22 新特性:Slices 变更 Concat、Delete、Insert 等函数,对开发挺有帮助!

1 月 17 日
阅读 4 分钟
633
大家好,我是煎鱼。在 Go1.22 这个新版本起,切片(Slices)新增和变更了一些行为。对于开发者相对更友好了一点。新增 Concat 函数在以前的 Go 版本中,有一个很常见的使用场景,如果我们想要拼接两个切片。必须要手写类似如下的代码: {代码...} 输出结果: {代码...} 如果在 Go 工程中常用到,大家还会在类似 util 包...

Go1.22 新特性:for 循环不再共享循环变量,且支持整数范围

1 月 9 日
阅读 2 分钟
812
又过了好几个月,到了 Go 新版本的日子了。Go 1.22 预计将于 2024 年 2 月发布。我将会给大家带来一系列的新版本特性讲解和分享。

Uber Go 出了个静态分析工具 NilAway,还挺实用!

1 月 4 日
阅读 2 分钟
431
大家好,我是煎鱼。风水轮流转,Go 程序写多了。总是会这有点问题,那有点问题。问题积累久了就容易出点事件,甚至是事故。这种时候大家往往会想着引入一些静态分析工具来解决这个问题。NilAway 分析工具最近 Uber 开发和开源了一个挺不错的静态分析工具 NilAway:使用场景是:在 Go 程序编译时就能捕获 nil,达到帮助开...

新提案:Go panic 能不能加 PanicError?

2023-12-28
阅读 3 分钟
465
大家好,我是煎鱼。在我们学习和平时使用 Go 时,一定会涉及到一个内置函数 panic: {代码...} 调用该函数后会停止代码的控制流程并开始恐慌,达到扭转当前程序控制流的目的。在使用上也常常和 defer 和 recover 关联上。快速 Demo以下是一个简单的使用 Demo: {代码...} 输出结果: {代码...} 看着都没什么问题。输出结...

Go Context 到底放第一个参数传,还是放结构体里?

2023-12-22
阅读 3 分钟
580
大家好,我是煎鱼。前段时间我们在聊手动管理内存 arena 的后续时。我们有提到 context 的函数传参等问题。当时在评论区有许多的小伙伴交流了起来,大家对此还是非常关注的:今天我们就来聊一聊 conetxt 传参的这个事。到底摆哪?Go 官方推荐是什么?快速介绍上下文(Context)是 Go 语言中非常有特色的一个特性,其主要...

裁员为什么会降本增笑?

2023-12-21
阅读 2 分钟
755
大家好,我是煎鱼。最近互联网公司放烟花的次数有些高,基本都扎堆 Q3~Q4 出现各类事件/事故。吃瓜都快跟不上了。作为互联网民工,为什么裁员后会导致降本增笑呢?今天我们一起来聊聊。各种事故烟花现阶段各大厂都领上号了,阿里先崩,再到滴滴,接着腾讯。涉及到产品至少有:阿里:访问密钥服务 AK 异常,引发阿里系多...

Go errors 默认加堆栈信息,有用不?

2023-12-07
阅读 2 分钟
426
大家好,我是煎鱼。在 Go 语言中,错误处理是我们必须涉及和争议比较大的一个功能特性。今天我们不太探讨 if err != nil 的繁杂忧愁。聚焦在 errors 标准库在排查、定位问题的诉求上。看看大家平时都是怎么做的。背景平时我们在返回和处理错误时,一般使用 errors 标准库。其支持以下几个 API: {代码...} 最简单的 Demo...

为什么最近听说 Go 岗位很少很难?

2023-12-05
阅读 2 分钟
616
其实这个话题已经躺在我的 TODO 里很久了,近来很多社区的小伙伴都私下来交流,也有在朋友圈看吐槽 Go 上海的大会没什么人。还不如 Rust 大会,比较尴尬。

Go HTTP GET 请求可以发送 body 吗

2023-11-27
阅读 2 分钟
490
前段时间遇到一个朋友,他跟我说他们在开发一个 Go 项目时,遇到了一个争议点,说来也好理解。WEB UI 端选择 GET、POST 类型时,程序是否要区分所传递的值(例如:Body),还是不管是什么类型都传。