go语言编码规范

栏目: Go · 发布时间: 7年前

内容简介:开发工具: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.命名规范

  1. 文件
    • 小写+下划线
  2. 包命名
    • package名和目录保持一致,需避免和标准库冲突
    • 避免import相对路径
  3. 方法/接口
    • 采用驼峰命名法
    • 非对外方法,首字母需为小写
  4. 变量
    • 采用驼峰命名法
  5. 常量
  • 大写+下划线

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 或者类似的用于同步的成员。必须使用指针传递,避免成员拷贝
  • 当接受者类型是一个结构体并且很庞大,或者是一个大数组,建议使用指针传递来提高性能,其他场景使用值传递即可

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解Nginx(第2版)

深入理解Nginx(第2版)

陶辉 / 机械工业出版社 / 2016-2 / 99.00元

本书致力于说明开发Nginx模块的必备知识,第1版发行以后,深受广大读者的喜爱.然而由于Ng,nx功能繁多且性能强大,以致必须了解的基本技能也很庞杂,而第1版成书匆忙,缺失了几个进阶的技巧描述,因此第2版在此基础上进行了完善。 书中首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法,然后重点介绍了女口何开发HTTP模块(含HTTP过滤模块)来得到定制化的Ng......一起来看看 《深入理解Nginx(第2版)》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具