2023.1.17 青训营笔记

89 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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 常见的字符串拼接方式