大家好,我是煎鱼。之前每次写 Go 错误处理的相关提案时,大家都会在评论区探讨到一个事。Go 这活不得劲,常被戏称,一个大型 Go 工程项目里 60% 的代码都是 if err != nil。咱们错误处理怎么不借鉴一下 Rust,高低也整个问号的语法特性,就可以简化这三行了,不香吗?借鉴 Rust 用 ?!| 符号核心的点是在现有的 Go 例...
大家好,我是煎鱼。Go 语言已经开源 10+ 年,从高的关注度,再到云原生时代引爆学习 Go 的浪潮,再到现在的数年后。其搜索热度和 TIOBE 排名基本维持如下:最新的排名第是第 11 名。以往我在网上常常看到大家讨论的 Go vs Java,大家基本都是从技术的角度分析,对比两者的各类成本、特性,孰强孰弱。技术角度上决定如何...
大家好,我是煎鱼。前段时间我们在写 Go1.20 新特性和变更时,发现了一个问题有悖论。Go1 有兼容性承诺,但如果发现了 BUG,会破坏兼容性。那怎么办?是大胆修改,破坏掉,还是说设计如此,打死不改?写了个开头结果阳了,现在阳半康回来更。Go1 兼容性保障在 Go1 引入了 Go 兼容性保障《Go 1 and the Future of Go Prog...
大家好,我是煎鱼。相信关注我的许多同学都有接触 Go 语言的开发,甚至在企业中多有实践。那么你在日常开发中,势必会接触到 gorilla 组织下的各个 Go 开源项目。如下图:gorilla/mux:Star:17.9k。a powerful request router for web applications。gorilla/websocket:Star:18.6k。a standards-compliant and widely...
大家好,我是煎鱼。不知道有多少 Go 的面试题和泄露,都和 for 循环有关。今天我在周末认真一看,发现了 redefining for loop variable semantics 。著名的硬核大佬 Russ Cox 表示他一直在研究这个问题,并表示十年的经验表明了当前语义的代价是很大的。问题案例一:取地址符在 Go 语言中,我们写 for 语句时有时会出现...
大家好,我是煎鱼。上一篇我在《如何对错误进行编程?》给大家分享了 Go 创始人对 Go 谚语之一 Errors are values 的诠释。本篇仍然是错误专场,是 Go 谚语中的 Don't just check errors, handle them gracefully,原文章同名,作者是 @Dave Cheney。以下的 “我” 均指代原作者。这条谚语和 Errors are value 关联性很强...