命名规则

  1. golang的变量函数命名需要使用驼峰命名法,且不能出现下划线, 文件名使用下划线
  2. golang中根据首字母的大小写来确定可以访问的权限。无论是方法名、常量、变量名还是结构体的名称,如果首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用可以简单的理解成: 首字母大写是公有的,首字母小写是私有的文件的命名,全小写,测试的文件:xxx_test.go包名和文件夹名字最好一样
变量命名规则
  • 变量命名命名必须清晰、明了,有明确含义的单词,命名中禁止使用缩写,除非已是业界通用或标准化的缩写;
  • 单字母名称仅适用于短方法中的局部变量,名称长短应与其作用域相对应。若变量或常量可能在代码中多处使用,则应赋其以便于搜索的名称且有意义的名称。
  • 变量名称一般遵循驼峰法,但遇到特有名词时,需要遵循以下规则:如果变量为私有,且特有名词为首个单词,则使用小写,如 apiClient,其它情况都应当使用该名词原有的写法,如APIClient、repoID、UserID
    错误示例:UrlArray,应该写成urlArray或者URLArray
一些常见的特有名词:
// A GonicMapper that contains a list of common initialisms taken from golang/lint
var LintGonicMapper = GonicMapper{"API":   true,"ASCII": true,"CPU":   true,"CSS":   true,"DNS":   true,"EOF":   true,"GUID":  true,"HTML":  true,"HTTP":  true,"HTTPS": true,"ID":    true,"IP":    true,"JSON":  true,"LHS":   true,"QPS":   true,"RAM":   true,"RHS":   true,"RPC":   true,"SLA":   true,"SMTP":  true,"SSH":   true,"TLS":   true,"TTL":   true,"UI":    true,"UID":   true,"UUID":  true,"URI":   true,"URL":   true,"UTF8":  true,"VM":    true,"XML":   true,"XSRF":  true,"XSS":   true,
}
函数命名规则

驼峰式命名,名字可以长但是得把功能,必要的参数描述清楚,函数名名应当是动词或动词短语,如postPayment、deletePage、save。并依Javabean标准加上get、set、is前缀。例如:xxx + With + 需要的参数名 + And + 需要的参数名 + …..

结构体命名规则
  • 结构体名应该是名词或名词短语,如Custome、WikiPage、Account、AddressParser,WriteDbMgr,ConfMgr,避免使用Manager、Processor、Data、Info等类名,而且类名不应当是动词。
  • 结构体中属性名大写,如果属性名小写则在数据解析(如json解析,或将结构体作为请求或访问参数)时无法解析
包名命名规则

包名应该为小写单词,不要使用下划线或者混合大小写。

接口命名规则
单个函数的接口名以”er”作为后缀,如Reader,Writer。接口的实现则去掉“er”。
type Reader interface {Read(p []byte) (n int, err error)
}
//两个函数的接口名综合两个函数名
type WriteFlusher interface {Write([]byte) (int, error)Flush() error
}
//三个以上函数的接口名,抽象这个接口的功能,类似于结构体名
type Car interface {Start([]byte) Stop() errorRecover()
}

注释

在编码阶段应该同步写好变量、函数、包的注释,最后可以利用godoc导出文档。注释必须是完整的句子,句子的结尾应该用句号作为结尾(英文句号)。注释推荐用英文,可以在写代码过程中锻炼英文的阅读和书写能力。而且用英文不会出现各种编码的问题。
每个包都应该有一个包注释,一个位于package子句之前的块注释或行注释。包如果有多个go文件,只需要出现在一个go文件中即可。

// log包实现了常用的log相关的函数
package log 导出函数注释,第一条语句应该为一条概括语句,并且使用被声明的名字作为开头。
// 求a和b的和,返回sum.
func Myfunction(a, b int) (sum int){}

常量

  • 常量均需使用全部大写字母组成,并使用下划线分词:const APP_VER = “1.0”
  • 如果是枚举类型的常量,需要先创建相应类型:
type Scheme string
const (HTTP  Scheme = "http"HTTPS Scheme = "https"
)
  • 如果模块的功能较为复杂、常量名称容易混淆的情况下,为了更好地区分枚举类型,可以使用完整的前缀:
type PullRequestStatus int
const (PULL_REQUEST_STATUS_CONFLICT PullRequestStatus = iotaPULL_REQUEST_STATUS_CHECKINGPULL_REQUEST_STATUS_MERGEABLE
)

变量规则举例

  • 变量命名基本上遵循相应的英文表达或简写,在相对简单的环境(对象数量少、针对性强)中,可以将一些名称由完整单词简写为单个字母,例如:
    – user 可以简写为 u
    – userID 可以简写 uid
    – 若变量类型为 bool 类型,则名称应以 Has, Is, Can 或 Allow 开头:
var isExist bool
var hasConflict bool
var canManage bool
var allowGitHook bool

import

对import的包进行分组管理,用换行符分割,而且标准库作为分组的第一组。如果你的包引入了三种类型的包,标准库包,程序内部包,第三方包,建议采用如下方式进行组织你的包

import ("github.com/bitly/go-simplejson""strconv""container/list""gopkg/utils"
)

在项目中不要使用相对路径引入包:import “../utils”

参数传递

  • 对于少量数据,不要传递指针
  • 对于大量数据的struct可以考虑使用指针
  • 传入参数是map,slice,chan不要传递指针,因为map,slice,chan是引用类型,不需要传递指针的指针

单元测试

  • 单元测试文件名命名规范为 example_test.go
  • 测试用例的函数名称必须以 Test 开头,例如:TestExample

golang命名规范相关推荐

  1. golang 命名规范和开发规范

    目录 文件命名 package 变量 常量 接口 结构体 方法 注释 README 文件命名 文件命名一律采用小写,不用驼峰式,尽量见名思义,看见文件名就可以知道这个文件下的大概内容. 其中测试文件以 ...

  2. Golang 推荐的命名规范

    很少见人总结一些命名规范,也可能是笔者孤陋寡闻, 作为一个两年的golang 开发者, 我根据很多知名的项目,如 moby, kubernetess 等总结了一些常见的命名规范. 命名规范可以使得代码 ...

  3. 初探Golang(2)-常量和命名规范

    1 命名规范 1.1 Go是一门区分大小写的语言. 命名规则涉及变量.常量.全局函数.结构.接口.方法等的命名. Go语言从语法层面进行了以下限定:任何需要对外暴露的名字必须以大写字母开头,不需要对外 ...

  4. Golang编码规范

    简介: gofmt 大部分的格式问题可以通过gofmt解决,gofmt自动格式化代码,保证所有的go代码与官方推荐的格式保持一致,于是所有格式有关问题,都以gofmt的结果为准. gofmt 大部分的 ...

  5. html语言书写注意事项,CSS命名规范参考及书写注意事项

    CSS书写顺序 *{ /*显示属性*/ display position float clear cursor - /*盒模型*/ margin padding width height /*排版*/ ...

  6. [置顶] Objective-C ,ios,iphone开发基础:命名规范

    命名规范:http://bukkake.iteye.com/blog/695492  点击打开链接 转载于:https://www.cnblogs.com/pangblog/p/3292256.htm ...

  7. Java项目命名规范

    2019独角兽企业重金招聘Python工程师标准>>> 一.命名规范 1. 项目名全部小写 2. 包名全部小写 3. 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写 ...

  8. Java 命名规范(非常全)

    欢迎关注方志朋的博客,回复"666"获面试宝典 在本文中,将从大到小,从外到内,总结Java编程中的命名规范.文中将会涉及到日常工作中常见的命名示例,如包命名,类命名,接口命名,方 ...

  9. SQL Server中的命名规范(个人使用)

    < DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 表名前缀t 字段名前缀f ...

最新文章

  1. 【小白自学Python时踩的那些坑,你值得拥有】
  2. 像“毒液”一样的粘液机器人火了,能取出体内异物,穿过1.5mm细缝无压力 | 哈工大港中大...
  3. 表单提交对chrome记住密码的影响
  4. Play Framework介绍:主要概念(转)
  5. [Markdown语法][快速入门][CSDN]
  6. wampserver集成环境和安装
  7. 安装postgreSQL出现configure: error: zlib library not found解决方法
  8. 关于linux低端内存
  9. Android TextView 45°倾斜效果
  10. Global Mapper24.0汉化中文版下载安装教程
  11. 邮件服务器1---原理以及基本概念
  12. Windows 11 找不到文件C:\ProgramData\Package Cache\{xxxx}xxx.exe。请确定文件名是否正确后,再试一次。
  13. python如何编写温度转换_Python温度转换实例分析
  14. 计算机存储—大话存储II读书
  15. android跟随系统切换语言
  16. JS --引用数据类型
  17. 告诉你究竟DevOps是什么?
  18. 浅谈供应链管理SCM的五大功能
  19. Freeline使用说明
  20. 促进大数据发展,加强智慧城市建设-思迈特软件

热门文章

  1. Technodigit.3DReshaper.Meteor.v2017.MR1.Win64 1CD
  2. 容器化技术与微服务结合---docker(一)
  3. 半导体ISO26262功能安全合规性开发的3P法则(下)
  4. re_path和path的区别
  5. 地球币EAC电脑钱包恢复的方法
  6. 现在学UI设计有前途吗?UI设计收入大概多少
  7. android搜索网站,加速 Android的 五大开源网站 codekk.com
  8. VREP教程--**BubbleRob tutorial**
  9. python 输入输出重定向_输入输出重定向_清华尹成python入门教程_少儿编程视频-51CTO学院...
  10. 最全的cmd命令大全