《100 Go Mistakes and How to Avoid Them》中文搬运

2023-05-18 ⏳2.8分钟(1.1千字)

最近看了一篇博客1,对《100 Go Mistakes and How to Avoid Them》这本书产生了浓厚的兴趣,文章分了若干个维度,分别阐述了一些常见的Go错误使用方式。遂将它译成中文,分享给小伙伴。有兴趣的也可以尝试阅读原文。

简介

本书包含了100个Go开发者经常会犯的错误,并且涵盖了大量的用例,非常易懂.此外这本书虽然是全英文的,但并没有很多生僻单词,且段落分明,就是围绕了100个经典问题去陈述。非常适合英语阅读能力稍弱同学来练手。可以忙里偷闲,休憩的时候看一章,会发现进度飞快。(以本人举例,我的英文阅读速度很慢,在不做笔记的情况下,大概15-30分钟一节。)

在错误中汲取的知识往往能印象深刻。本书适合那些已经拥有一定Go知识量的开发者,该文章不会涉及到基础语法。

书中有一句话适合共勉。

A person who never made a mistake never tried anything new.

开发人员应该勇于尝试新事物才能不断进步。

读书笔记

编码以及项目架构[1-16]

把Go项目组成得清晰,规范以及可维护并不简单。这些在项目组织架构上的一些错误会让你更能理解最佳实践的意义。

文章详见编码以及项目架构篇

数据类型[17-29]

处理数据类型对于工程师来说是一个高频操作,本章节会深入了解一些与基础类型/slice/map相关的常规的错误。

文章详见数据类型篇

控制结构[30-35]

Go中,只有for这种控制结构,本章节会深入了解一些关于range循环的一些使用误区。

文章详见控制结构篇

字符串[36-41]

在Go语言中,string是不可变的数据结构,一个指向[]byte的指针。引入了一种概念叫runes,这个概念很重要也会容易误导新人。当我们了解了string是如何管理的,我们就能避免一些常见的问题。

文章详见字符串篇

函数与方法[42-47]

在Go语言中,function就是我们常说的函数,而method则是依附于固定类型的一个函数,也就是我们常说的结构体方法。而这个固定类型被称为receiver可以是值也可以是指针。

文章详见函数与方法篇

错误管理[48-54]

错误管理是构建一个健壮的可观测的应用的基础,也是代码组成的很重要的一部分。在Go中,错误管理不依赖传统的try/catch,而是返回一个常规的error类型返回值。

文章详见错误管理篇

并发基础[55-60]

现在的CPU都被设计成多核以及超线程。所以并发会变得尤为重要。Go提供了极其方便的并发能力,但并不意味着写并发程序很简单。本章节主要讨论并发的基础概念。

文章详见并发基础篇

并发实践[61-74]

关于并发实践比较常见的误区。

文章详见并发实践篇

标准库[75-81]

Go标准库是一系列核心包的集合。比如HTTP的客户端服务端,操作JSON数据,数据库操作等等。然而,也会容易错误的使用。下面我们可以看下一些比较常见的误区。

文章详见标准库篇

测试[82-90]

测试是一个项目生命周期中很重要的一环。也提供了很多好处,比如:应用内的信任度,可以当作代码文档,可以更方便的重构.通过本章,我们看下一些常见的错误。

文章详见测试篇

优化[91-100]

在大部分场景下,可读且干净的代码比优化过但复杂难懂的代码要更好。优化往往带来的是成本上升。

Make it correct, make it clear, make it concise, make it fast, in that order.

在此篇中,我们讨论一些常见的优化技术。

文章详见优化篇