这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
一、本堂课重点内容:
- 本堂课的知识要点有哪些?
GO语言基础
高质量编程:编写的代码能够达到正确可靠、简洁清晰的目标可称之为高质量代码
编程原则:简单性,可读性,生产力
如何编写高质量的Go代码:代码格式、注释、命名规范、控制流程、错误和异常处理
编码规范-注释:公共符号始终要注释
声明中的变量、常熟、函数、结构、既不明显也不简短的公共功能、对库中的任何函数
不需要注释实现接口的方法
编码规范-代码格式:推荐使用gofmt自动格式化代码
注释应该解释代码如何做的
注释应该解释代码实现的原因
注释应该解释代码什么情况会出错
公共符号始终要注释
代码是最好的注释,注释应该提供代码未表达出的上下文信息
编码规范-命名规范 :简洁胜于冗长
缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写
变量距离其被使用的地方越远,则需要携带越多的上下文信息
全局变量在其名字中需要更多的上下文信息,使得在不同地方可以轻易辨认出其含义
deadline替换成t降低了变量名的信息量
使用单数,谨慎使用缩写fmt format
避免嵌套,保持正常流程清晰:如果两个分支中都包含return语句,则可以去除冗余的else
尽量保持正常代码路径为最小路径
编程规范-控制流程
编程规范-错误和异常处理
错误的Warp和Unwarp
错误判定 errors.As
error尽可能提供简明的上下文信息链,方便定位问题
panic用于真正异常的情况
recover 生效范围,在当前goroutine的被defer的函数中生效
Now NowTime Parse Parse、Duration
defer语句会在函数返回前调用
多个defer语句是后进先出
slice预分配内存:切片本质是一个数组片段的描述,包括数组指针,片段的长度,片段的容量(不改变内存分配情况下的最大长度)切片操作并不复制切片指向的元素 创建一个新的切片会复用原来切片的底层数组
map预分配内存
使用strings.Builder 常见的字符串拼接方式