
go语言规范
学习、记录Go代码中的惯用约定
萝卜头LJW
ZJU,目前菊厂,工作——k8s搬砖工
展开
-
Go语言规范-没有必要的else
如果在 if 的两个分支中都设置了变量,则可以用单个 if 替换它。Badvar a intif b { a = 100} else { a = 10}Gooda := 10if b { a = 100}参考材料:https://github.com/uber-go/guide/blob/master/style.md#unnecessary-else...原创 2021-03-25 20:45:13 · 286 阅读 · 0 评论 -
Go语言规范-减少嵌套
代码应该尽可能减少嵌套,在处理错误/特殊情况时,需提前返回或继续循环,不要超过4层!Badfor _, v := range data { if v.F1 == 1 { v = process(v) if err := v.Call(); err == nil { v.Send() } else { return err } } else { log.Printf("Invalid v: %v", v) }}Goodfo原创 2021-03-25 13:39:27 · 243 阅读 · 0 评论 -
Go语言规范-Function Grouping and Ordering
如下代码:大家对 const,var,struct排序应该是没有太大异议,放在最上头即函数的上面。go语言的函数和方法是两个不同的东西,方法是包含接受者的函数,如 func (s *something) Cost() {...}const( a = xx b = xx)var ( xxx = 1 xxxx = 2)type something struct{ ... }func (s *something) Cost() { return calcCo原创 2021-03-24 15:04:08 · 238 阅读 · 0 评论 -
Go语言规范-函数名
使用驼峰命名法,不要使用下划线。举例:MixedCaps 或者 mixedCaps,公有函数首字母得大写,私有函数首字母得小写。参考资料:https://github.com/uber-go/guide/blob/master/style.md#function-nameshttps://golang.org/doc/effective_go#mixed-caps...原创 2021-03-24 09:54:55 · 698 阅读 · 1 评论 -
Go语言规范-package-names
包命名规范:仅小写,没有大写或下划线。简洁简短,有代表性。不是复数,举个栗子,使用 net/url 而不是 net/urls。不要使用common,util,shared,lib等,因为信息不明确,过于宽泛。参考资料:https://github.com/uber-go/guide/blob/master/style.md#group-similar-declarationshttps://rakyll.org/style-packages/https://blog.golang.org原创 2021-03-19 11:24:41 · 1113 阅读 · 0 评论 -
Go语言规范-Import Aliasing
1. 点操作和_操作导入包时,我们会看到如下点操作 和**_操作**:import ( . "xxx/xxx/xxx" _ "xxx/xxx/xxx")点操作: 可以理解为包名不需要写了,比如 fmt.Println(“Hello world!”),只要改成 Println(“Hello world!”)。_操作: 该包内的所有 init() 函数都会被执行,仅希望包内的 init() 函数被执行。2. 导入同名包我们导入包时很容易出现同名,那我们该怎么做呢?解决方案如下:.原创 2021-03-18 11:19:49 · 490 阅读 · 0 评论 -
Go语言规范——持续更新中
当自己成为 commiter 后越发觉得代码规范,代码可读性的重要性!!!但是自己对代码规范了解甚微,知道一些文档,但是只知道一点,有时候写代码的时候也会去看下,其实就是不够熟练,所以自己还是想做个总结。希望自己能写出优美的好代码!!!...原创 2021-03-11 11:28:52 · 137 阅读 · 0 评论 -
Go语言规范-import(导入)排序
当我们需要通过 import 导入一些包时,如何进行排序呢?建议顺序:标准库,系统库,第三方库,本项目库,不同分组使用空行分割开。Badimport ( "database/sql" "io" "strconv" "golang.org/x/net/context" "example.com/foo/bar" "example.com/foo/baz" )Goodimport (原创 2021-03-11 11:22:43 · 5850 阅读 · 0 评论