Go 代码风格没人喜欢?不对,Gofmt 是所有人的最爱...

2022-09-20
阅读 2 分钟
7.7k
大家好,我是煎鱼。在任何语言进行编程开发时,只要涉及到多人协作。就一定会遇到一个旷世斗争的大问题。那就是:编码风格。Go 的,PHP 的,Java 的,C++ 的;初级、中级、高级、管理的风格;传统的、互联网的又都不一样。谁的风格更好例如经典的判断场景:if err != nil ,至少可以写出三种模式。如下代码: {代码...} ...

对 Go2 错误处理提案的批判

2022-09-06
阅读 4 分钟
7.6k
一年半前分享了《先睹为快,Go2 Error 的挣扎之路》的文章,内容涉及 Go1 错误处理的问题、Go1.13 的加强、Go2 的新错误处理提案的详解。有多少小伙伴还记得 Go2 的新错误提案的 “美好” 未来?

Go 的零值有什么用?看看这 4 个场景

2022-09-04
阅读 3 分钟
7k
前文给大家分享了《10+ 条 Go 官方谚语,你知道几条?》,今天进一步讲讲第 5 条谚语 Make the zero value useful(让零值变得有用),看看里面想的是什么意思。

在 Go 里用 CGO?这 7 个问题你要关注!

2022-09-04
阅读 3 分钟
7.7k
大家好,我是煎鱼。今天给大家分享的是 Go 谚语中的 Cgo is not Go,原文章同名,略有修改,作者是 @Dave Cheney。以下的 “我” 均指代原作者。借用 JWZ 的一句话:有些人在面对一个问题时,认为 "我知道,我会使用 cgo(来解决)"。在使用 cgo 后,他们就会遇到两个新问题。Cgo 是什么Cgo 是一项了不起的技术,它允许 Go...

Go 只会 if err != nil?这是不对的,分享这些优雅的处理姿势给你!

2022-08-11
阅读 8 分钟
9k
大家好,我是煎鱼。上一篇我在《如何对错误进行编程?》给大家分享了 Go 创始人对 Go 谚语之一 Errors are values 的诠释。本篇仍然是错误专场,是 Go 谚语中的 Don't just check errors, handle them gracefully,原文章同名,作者是 @Dave Cheney。以下的 “我” 均指代原作者。这条谚语和 Errors are value 关联性很强...

if err != nil 太烦?Go 创始人教你如何对错误进行编程!

2022-08-01
阅读 4 分钟
9.1k
前段时间我分享了一篇文章《10+ 条 Go 官方谚语,你知道几条?》,引发了许多小伙伴的讨论。其中有一条 “Errors are values”,大家在是 “错误是值” 还是 “错误就是价值” 中反复横跳,纠结不易。

Go 程序太大了,能要个延迟初始化不?

2022-07-27
阅读 3 分钟
7.1k
大家好,我是煎鱼。在公司的不断发展中,一开始大多是大单体,改造慢了,一个仓库会有使用几十年的情况,仓库的规模基本是不断增大的过程。影响之一就是会应用程序打包后的体积越来越大,不知道被用哪里去了...今天要探讨的提案《proposal: language: lazy init imports to possibly import without side effects》,就...

Go 常量只支持基本数据类型?为什么?社区撕了 9 年了...

2022-07-20
阅读 2 分钟
7.2k
大家好,我是煎鱼。今天给大家分享的一个提案,已经在 Go 社区讨论了整整 9 年(2013~2022),它与我们的日常编程密切相关。今天就由煎鱼和大家一起深入学习和了解提案《proposal: spec: allow constants of arbitrary data structure type》吧,看看有没有什么新的想法。背景我们先看看以下示例代码,如下: {代码...} ...

脉脉网友出的一道简单 Go 面试题,你能答对吗?

2022-07-19
阅读 1 分钟
7k
大家好,我是煎鱼。前段时间脉脉在搞一个 “我来出一道面试题” 的讨论系列,其中一位脉友 @在宿雾参观的小冬瓜 出了一道 Go 题目。来和煎鱼一起回答自己答的准不准,知识掌握的怎么样吧。(大家都说很简单,结果在投票上 50 50,错的人更多...)题目Go 题目如下: {代码...} 请选择程序的运行结果(答案)是什么?A:1;B...

这个新 Go 错误处理提案,能解决问题不?

2022-07-13
阅读 3 分钟
6.8k
大家好,我是煎鱼。Go 语言的一大特色就是它的错误机制,因此基本上所有的错误处理提案或讨论我都会有所查看和学习,开拓不同的思考视野和解决方法。今天分享的是 @Cristo García 所提出的提案《Simple Error Handling for Go 2》,略有修改,和煎鱼一起学习和讨论吧!Go 必须仍然是 Go这一个提案的核心观点是 Go 必须仍...

优化 Go 错误处理,魔改 Go recover 靠谱吗?

2022-07-08
阅读 3 分钟
6.6k
Go 的错误处理一直是表现最突出的一块地方,许许多多的同学都提出了各种提案,例如:引入 try-catch、用 panic 代替 if err != nil、引入新的关键字等。但这些都被一一驳回了。

Go1.19 那些事:国产芯片、内存模型等新特性,你知道多少?

2022-07-01
阅读 4 分钟
7.4k
Go 的内存模型已被修订,以使 Go 与 C、C++、Java、JavaScript、Rust 和 Swift 使用的内存模型保持一致。Go 只提供顺序一致的原子学,而不是其他语言中的任何更宽松的形式。

Go 为什么不支持前缀自增运算符?

2022-06-22
阅读 2 分钟
5.9k
大家好,我是煎鱼。习惯性对比,类比学习,是大家掌握新技能时会习惯性的关联操作。像 Go 这种比较有味道的编程语言,其有一个细节也是大家很好奇的。其实 Go 只支持后自增/自减,今天煎鱼和大家一起研究为什么。语法基本的 Go 自增,非常简单。直接见代码: {代码...} 输出结果: {代码...} 如果回答输出结果错了,建议...

Go 内联优化能让程序快多少?

2022-06-20
阅读 4 分钟
6k
最近周末在家学习时看到 @Dave Cheney 的《Inlining optimisations in Go》还是有不少养分的,翻译分享给大家,有所修整、删减。

惊了!goto 语句让 Go 代码变成意大利面条吗?

2022-06-14
阅读 3 分钟
9.2k
大家好,我是煎鱼。Goto 语句在社区的讨论中经常被人诟病,认为其破坏了结构化编程和程序的抽象,是有害的,可怕的。最早的观点来源于 1968 年,Edsger Dijkstra 写了一封信《Go To Statement Considered Harmful》,来表达其是有害的观念。如下图:不过,但是,其实...Go 支持了 goto 语句,很多人不理解,大喊 less is...

Go 想要加个箭头语法,这下更像 PHP 了!

2022-06-08
阅读 3 分钟
5.8k
新的 Go 提案目的是添加轻量级的匿名函数语法,业内别名又叫 “箭头语法”,是由 @Damien Neil 所提出的,提案的来源是《proposal: Go 2: Lightweight anonymous function syntax》,褒贬都有:

Go 为什么要设计 iota 常量?

2022-06-02
阅读 2 分钟
6.1k
Go 语言中有一个非常有特色的东西,那就是 iota 常量。经过某鱼的不完全统计,许多 Go 开发者都是由 PHP、Java、C++、Python 等转型过来,对此还是挺好奇的。

Go 错误处理新思路?用左侧函数和表达式

2022-05-27
阅读 3 分钟
5.3k
错误处理一直是 Go 一个很有争议的地方,大家在该类提案上贡献了各种各样的想法。在五一假期期间,我也发现了一个有趣的技术提案,那就是:左侧函数;还有 Go+ 的新思路。

骚爆了... Go 错误处理中再套个娃,能解决烦恼不?

2022-05-24
阅读 3 分钟
5.1k
大家好,我是煎鱼。在 Go 的编程中,错误处理机制的处理永远是大家在讨论。不过 Go1 没法大动干戈了,那就想办法继续优化吧。今天煎鱼给大家介绍一个五一假期期间学习时看到的一个新提案。背景在现阶段,我们在标准库中能够包装错误的唯一方法是使用 fmt.Errorf,可以操作的空间是比较小的。这意味着我们对错误所能做的...

被折磨了 13 年,Go 怎么解决再赋值的坑?

2022-05-19
阅读 2 分钟
4.1k
大家好,我是煎鱼。最近在看 Go 的一些历史提案时,发现有个别很神奇的提案,已经提出来了许多年,但在如今依然没有关闭,并且不断地有人在讨论,但又解决不了。有种 “很气又干不掉我的样子”,今天就由煎鱼带大家一起来看看是什么。背景今天本文介绍的 Go 提案《proposal: spec: various changes to :=》是经典中的经典...

你会犯这些 Go 编码错误吗(二)?

2022-05-18
阅读 3 分钟
3.4k
大家好,我是煎鱼。前一次给大家分享了《你会犯这些 Go 编码错误吗(一)?》,不知道大家吸收的怎么样,还有再踩到类似的坑吗?今天继续来第二弹,跟煎鱼上车。Go 常见错误6. 同名变量的作用域问题我们在编写程序时,由于各种临时变量,会常用变量名 n、i、err 等。有时候会遇到一些问题,如下代码: {代码...} 程序的...

10+ 条 Go 官方谚语,你知道几条?

2022-05-15
阅读 2 分钟
2.6k
作为一个 Go 语言开发工程师,总是在入门、深入、撕提案时能够听到各种带有 Go 特色的话语,例如:少即是多(less is more),非常有趣。

这些常见的 Go 编码错误,你犯过吗(一)?

2022-05-15
阅读 4 分钟
2.7k
大家好,我是煎鱼。在用 Go 编程时,总会遇到各种奇奇怪怪的错误,国内外已经有许多小伙伴总结过(参考链接见参考),感觉都能凑一桌了。之前一直想写,想着五一假期肝一肝。今天给大家分享 Go 里常见的编码错误(一),希望对大家有所帮助。Go 常见错误1. nil Map问题在程序中声明(定义)了一个 map,然后直接写入数据...

为什么 Go 用起来会难受?这 6 个细节你知道吗

2022-05-09
阅读 3 分钟
3.4k
大家好,我是煎鱼。在做新的应用选型时,我们会进行应用编程语言的选择,这时会纠结 Java、PHP、Go...各种,会思考有没有致命的问题,不能用?可以明确的是,Go 没有非常致命的问题,否则你我他都不会在这里相遇,也不会大火。难受的点,倒是有不少,今天就由煎鱼和大家一起来看看。难受的点泛型在 Go1.18 以前,在所有...

Go 读者提问:Go 函数返回值命名有存在的意义吗?

2022-03-22
阅读 2 分钟
2k
大家好,我是煎鱼。在前两周我们在这篇《你能答对这道 Go 题目吗?超过 80% 的人都答错了...》文章中,针对题目,有小伙伴提出了如下问题:为此,今天我们就来了解一下 Go 函数的返回值命名的意义是什么?案例函数 a 带返回值,函数 b 是不带返回值命名的例子。如下: {代码...} 这是日常工作中最常见的,前两年年我听到...

Go 设计哲学:少即是多,哪里来的?

2022-03-10
阅读 6 分钟
6.8k
甚至讨论 Go issues 和提案时,都会有人用 “less is more” 来反驳或做为论点支撑,非常的有意思。大家都会很好奇,出处是哪里,是什么意思?

网友:Go 你是 Google 的,Go:我不是

2022-02-23
阅读 4 分钟
2.7k
大家好,我是煎鱼。我有一个朋友,近几年听说各种博弈、各种国内云产品等发力,各企业的 “国产化” 被提到了台面上,明确要去做这类事情。作为当代编程语言风口的 Go 语言,在宣传时,常常会说是 Google 背书:那么问题来了!假设出了一些冲突,Go 语言是否会被 Google 完全控制,形成垄断呢?今天煎鱼就和大家一起来了解...

Go1.18 新特性:高效复制,strings, bytes 标准库新增 Clone API

2022-02-21
阅读 2 分钟
3.9k
Go1.18 过几周(3月份)就要发布了,先前我们已经更新了好几期新版本特性,今天给大家带来一个新的优化类的内容,是与 strings 和 bytes 标准库有关。

Go1.18 新特性:弃用 strings.Title 方法,换个新坑吧!

2022-02-16
阅读 3 分钟
6.3k
最近在看 Go1.18 Release Notes 时,发现 strings, bytes 标准库的 Title 方法,竟然被弃用了(Deprecated),这是为什么呢?

Go1.18 新特性:三顾茅庐,被折腾 N 次的 TryLock

2022-02-15
阅读 3 分钟
2.9k
大家好,我是煎鱼。还记得我之前写过一篇《Go 为什么不支持可重入锁?》的文章,主要是介绍有其他语言经验的小伙伴,想要 Go 支持可重入锁,被残忍拒绝的历程。大佬总会有拗不过的时候,虽然不是可重入锁。但在 Go1.18 实现了尝试获取锁(TryLock)的新方法,也有点那味道了。今天煎鱼带大家学习被折腾了 3 回的 “他”。...