分享好友 站长动态首页 网站导航

大厂 Go 编程规范(八):代码规范

网友发布 2022-10-12 18:12 · 头闻号编程技术

这一篇主要介绍Go代码规范,帮助我们编写符合 go 习惯的 格式上比较优雅的代码。使用goimport 分组这样import 可以分组,显得比较整洁。

import ( "fmt" "os" "go.uber.org/atomic" "golang.org/x/sync/errgroup")相同的类型放到一组const ( a = 1 b = 2)var ( a = 1 b = 2)type ( Area float64 Volume float64)包名当命名包时,请按下面规则选择一个名称:全部小写。

没有大写或下划线。大多数使用命名导入的情况下,不需要重命名。简短而简洁。

请记住,在每个使用的地方都完整标识了该名称。

例如net/url,而不是net/urls。不要用“common”,“util”,“shared”或“lib”。

这些是不好的,信息量不足的名称。不要使用别名只有在包名冲突的情况下才需要使用别名,不要滥用别名import ( "fmt" "os" "runtime/trace" nettrace "golang.net/x/trace")减少嵌套这个应该是各种语言都要遵守的规范,避免出现多层if else 嵌套应该将下面的代码for _, 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) }}改造成下面的方式for _, v := range data { if v.F1 != 1 {log.Printf("Invalid v: %v", v)continue } v = process(v) if err := v.Call(); err != nil {return err } v.Send()}减少没有必要的else应该将下面的代码var a intif b { a = 100} else { a = 10}改造成a := 10if b { a = 100}使用字段名初始化结构体不要为了省事k := User{"John", "Doe", true}而应该写全了。

k := User{FirstName: "John",LastName: "Doe",Admin: true,}空slice检查空的slice 不应该使用func isEmpty(s []string) bool { return s == nil}而应该通过len 方法。

func isEmpty(s []string) bool { return len(s) == 0}9、缩小变量作用域如下写法 err 返回是整个函数err := ioutil.WriteFile(name, data, 0644)if err != nil { return err}改成如下写法就可以控制在 if 函数之内。

免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报

举报
反对 0
打赏 0
更多相关文章

评论

0

收藏

点赞