最后但同样重要的是,如果一个 goroutine 创建资源,并且它的生命周期与应用的生命周期绑定在一起,那么在退出应用之前等待这个 goroutine 完成可能更安全。这样,我们可以确保释放资源。 现在让我们讨论在 Go 中工作时最常见的错误之一:错误处理 goroutines 和循环变量。 9.3 #63:对 goroutines 和循环变量不够小心 错...
GO学起来简单,但不一定容易掌握。 让我们以并发性为例。2019 年,一项专注于并发 bug 的研究发表了:“理解 Go 中真实世界的并发 bug。¹” 这项研究是首次对并发 bug 的系统分析。它关注多个流行的 Go 存储库,比如 Docker、gRPC 和 Kubernetes。这项研究中最重要的一点是,大多数阻塞错误都是由通过通道的消息...
例如,使用!integration意味着只有当integration标志不启用时,我们才想要包含测试文件(contract_test.go): //go:build !integration package db import ( "testing" ) func TestContract(t *testing.T) { // ... } 使用这种方法, 带integration标志运行go test仅运行集成测试。 在没有integration标志的情况下运行g...
避免过度泛化 通用数据结构和算法 方法提升是一个双刃剑 函数与方法 #42 不知道选择接收器类型 #43 从不使用命名的返回值 #44 使用命名返回值的副作用 #45 返回一个 nil 接收器 #46 使用文件名作为函数输入 #47 忽视 defer 和接收器的评估 错误管理 仁者见仁智者见智 #48 panic golang-standards 并非官方...
7.7 不处理 defer 错误(#54) 小结 前言 大家好,这里是白泽。《Go语言的100个错误以及如何避免》是最近朋友推荐我阅读的书籍,我初步浏览之后,大为惊喜。就像这书中第一章的标题说到的:“Go: Simple to learn but hard to master”,整本书通过分析100个错误使用 Go 语言的场景,带你深入理解 Go 语言。
1.1 Go 语言概述 1.2 简单不等于容易 1.3 使用 Go 的100个错误 2. Code and project organization 2.1 变量屏蔽(#1) 2.2 没有必要的代码嵌套(#2) 2.3 误用 init 函数(#3) 2.4 过度使用 getter & setter(#4) 2.5 接口污染(#5) 2.6 在生产侧的接口(#6) ...
【《100个Go编程错误以及如何避免它们》随书代码】’100 Go Mistakes and How to Avoid Them' by Teiva Harsanyi GitHub: github.com/teivah/100-go-mistakes #开源##Go# û收藏 20 1 ñ21 评论 o p 同时转发到我的微博 按热度 按时间 正在加载,请稍候... AI博主 3 ...
《100个Go语言典型错误》适合熟悉 Go编程和语法的开发人员阅读。 作者简介· ··· Teiva Harsanyi 是Docker 公司的资深软件工程师。他曾在多个领域工作,包括保险、交通运输及像空中交通管理这样的安全重点行业。他非常热衷于研究Go 语言及如何设计和实现可靠的应用程序。 目录·...
回到Go 语言,我们可以想到大量的例子:开发人员想要对未来的需求做抽象,使用接口或泛型。本书会讨论应该避免引入不必要的复杂性来破坏代码库的主题。 1.3.3 可读性差 另一种错误是可读性差。正如Robert C.Martin在他的书《代码整洁之道》中所写的那样:代码的阅读和编写的时间比例超过10∶1.5。[5]我们大多数人都...