内容简介:开发工具:GoLand|– bin|– build
开发工具:GoLand
官方代码规范:https://golang.org/doc/effective_go.html
1.工具
- 提交代码前需使用fmt工具格式化
- 提交代码前需使用vet工具进行静态检查
2.目录规范
|– bin
|– build
|–build_dev/test/release.sh
|– gen-go
|– config
|– dev/test/release.yml
|– pkg
|–controller
|–dao
|–rpc
|–service
|–*_impl.go
|–*_test.go
|–*_mock.go
|– vendor
|– README.md
3.命名规范
-
文件
- 小写+下划线
-
包命名
- package名和目录保持一致,需避免和标准库冲突
- 避免import相对路径
-
方法/接口
- 采用驼峰命名法
- 非对外方法,首字母需为小写
-
变量
- 采用驼峰命名法
- 常量
- 大写+下划线
4.注释
-
可以通过
/* …… */
或者// ……
增加注释,//
之后应该加一个空格 - 注释内容需要在文件/方法/变量上方
5.异常
_
6.其他
- 不允许逻辑中调用Panic,选择日志的log.Fatal
- 不要频繁的调用defer
- 尽早return,一旦有错误发生,马上返回
-
if接受初始化语句,约定如下方式建立局部变量
if err := file.Chmod(0664); err != nil { return err }复制代码
-
方法的接收器的名称 一般采用strcut的第一个字母且为小写,而不是this,me或者self
type rpcClient struct {
once sync.Once
}
func (r *rpcClient) newCodec(contentType string) (codec.NewCodec, error) {
//
}
-
对于bool类型的变量
var b bool
,直接使用它作为判断条件,而不是使用它和true/false进行比较 - byte/string slice相等性比较,使用Equal
- 当接受者是map, chan, func, 不要使用指针传递,因为它们本身就是引用类型
- 当接受者是slice,而函数内部不会对slice进行切片或者重新分配空间,不要使用指针传递
- 当函数内部需要修改接受者,必须使用指针传递
-
当接受者是一个结构体,并且包含了
sync.Mutex
或者类似的用于同步的成员。必须使用指针传递,避免成员拷贝 - 当接受者类型是一个结构体并且很庞大,或者是一个大数组,建议使用指针传递来提高性能,其他场景使用值传递即可
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Java语言编程 – 编码问题
- golang语言开发,遇到编码混排
- 调查 | 黑客将Python作为攻击编码语言的首选
- 用 Go 开发接口服务--Go 语言编码规范
- 开源 | Uber Go 语言编码规范中文版
- Facebook新研究:一个编码器hold住93种语言!跨语言迁移无需修改
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java Concurrency in Practice
Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowbeer、David Holmes、Doug Lea / Addison-Wesley Professional / 2006-5-19 / USD 59.99
This book covers: Basic concepts of concurrency and thread safety Techniques for building and composing thread-safe classes Using the concurrency building blocks in java.util.concurrent Pe......一起来看看 《Java Concurrency in Practice》 这本书的介绍吧!
JS 压缩/解压工具
在线压缩/解压 JS 代码
XML 在线格式化
在线 XML 格式化压缩工具