Go Code Review Comments

Go 写了这么久,却一直没有把 Go Code Review Comments 完整地看一遍。今天看了一篇 Go 的文章,里面提到了它,索性就仔细一读。 一开头就声明,这只是一份常见错误的列表,而非综合的风格指南,亦可作为 Effective Go 的一份补充。 Gofmt 建议使用 gofmt 来修复一些风格上的问题。像 VS Code 之类的编辑器在安装 Go 的插件后,设置中会让你选择何时格式化代码,一般在保存时就够了。我使用的是 goimports,它除了能胜任 gofmt 的工作之外,还能自动添加和删除导入的包,并分类排序。 Comment Sentences 注释应当是完整的句子,以被注释的对象名开始,以句号结束。 Contexts Go 一般显式地在整个函数调用链中传递 Contexts,并作为第一个参数。除此之外,不要在结构体(struct)中添加 Context 类型的元素,而是给该结构体的每一个方法添加 ctx 参数。 Copying 从其他包中复制结构体的时候,要小心避免预期外的别名。如果某个类型的方法其 receiver 为该类型的指针,就不要复制该类型的值。 Declaring Empty Slices 声明空的 slice 时,更推荐使用 var 而非 := 的方式,例子如下: 1 2 3 4 // prefer var t []string // not prefer t := []string{} 两种方式得到的 slice 功能相同,有相同的长度和容量,并且都为0,区别在于:第一种方式得到的是 nil slice,而第二种方式得到的是长度为0的非 nil slice。nil slice 是更推荐的风格。这个问题之前叶古和我说过几次,说不要写第二种方式这样的代码,会让人觉得 Go 没学好。 ...

2019-06-05 · 3 min · 439 words · 夜阑听风