100-go-mistakes
这是一本开源的书籍代码,Go
开发人员在接触生产中的代码之前必读的书。
100 个Go
语言错误以及如何避免它们向您展示了如何:
- 躲避 Go 开发者最常犯的错误
- 构建和组织您的 Go 应用程序
- 有效地处理数据和控制结构
- 以惯用的方式处理错误
- 提高您的并发技能
- 优化你的代码
- 使您的应用程序为生产做好准备并提高测试质量
100 个 Go
错误以及如何避免它们。将重点放在 Go
代码中你可能甚至不知道自己正在犯的常见错误上。
您将探索该语言的关键领域,例如并发性、测试、数据结构等,并学习如何避免和修复您自己的项目中的错误。随着您的学习,您将浏览处理 JSON 数据和 HTTP 服务的棘手部分,发现 Go 代码组织的最佳实践,并学习如何有效地使用切片。
github上的地址在这里。
文章的结构也非常的有趣,用的是一个个小岛组成:
就像一个个山头,一个个的攻打下来。
第一个 注意隐藏变量
变量的范围是指可以引用变量的位置:换句话说,名称绑定有效的应用程序部分。在 Go 中,在块中声明的变量名可以在内部块中重新声明。这种称为变量阴影的原理很容易出现常见错误。
var client *http.Client
if tracing {
client, err := createClientWithTracing()
if err != nil {
return err
}
log.Println(client)
} else {
client, err := createDefaultClient()
if err != nil {
return err
}
log.Println(client)
}
/ Use client
在这个例子中,我们首先声明一个客户端变量。然后,我们在两个内部块中使用短变量声明运算符 (:=) 将函数调用的结果分配给内部客户端变量,而不是外部客户端变量。结果,外部变量始终为零。