分享
  1. 首页
  2. 文章

Golang命名规范

freelang · · 14961 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Golang命名规范

image

文件名

  • 整个应用或包的主入口文件应当是 main.go 或与应用名称简写相同。例如:Gogs 的主入口文件名为 gogs.go

函数或方法

  • 若函数或方法为判断类型(返回值主要为 bool 类型),则名称应以 Has, Is, CanAllow 等判断性动词开头:

    func HasPrefix(name string, prefixes []string) bool { ... }
    func IsEntry(name string, entries []string) bool { ... }
    func CanManage(name string) bool { ... }
    func AllowGitHook() bool { ... }
    

常量

  • 常量均需使用全部大写字母组成,并使用下划线分词:

    const APP_VER = "0.7.0.1110 Beta"
    
  • 如果是枚举类型的常量,需要先创建相应类型:

    type Scheme string
    const (
     HTTP Scheme = "http"
     HTTPS Scheme = "https"
    )
    
  • 如果模块的功能较为复杂、常量名称容易混淆的情况下,为了更好地区分枚举类型,可以使用完整的前缀:

    type PullRequestStatus int
    const (
     PULL_REQUEST_STATUS_CONFLICT PullRequestStatus = iota
     PULL_REQUEST_STATUS_CHECKING
     PULL_REQUEST_STATUS_MERGEABLE
    )
    

变量

  • 变量命名基本上遵循相应的英文表达或简写。

  • 在相对简单的环境(对象数量少、针对性强)中,可以将一些名称由完整单词简写为单个字母,例如:

    • user 可以简写为 u
    • userID 可以简写 uid
  • 若变量类型为 bool 类型,则名称应以 Has, Is, CanAllow 开头:

    var isExist bool
    var hasConflict bool
    var canManage bool
    var allowGitHook bool
    
  • 上条规则也适用于结构定义:

    // Webhook represents a web hook object.
    type Webhook struct {
     ID int64 `xorm:"pk autoincr"`
     RepoID int64
     OrgID int64
     URL string `xorm:"url TEXT"`
     ContentType HookContentType
     Secret string `xorm:"TEXT"`
     Events string `xorm:"TEXT"`
     *HookEvent `xorm:"-"`
     IsSSL bool `xorm:"is_ssl"`
     IsActive bool
     HookTaskType HookTaskType
     Meta string `xorm:"TEXT"` // store hook-specific attributes
     LastStatus HookStatus // Last delivery status
     Created time.Time `xorm:"CREATED"`
     Updated time.Time `xorm:"UPDATED"`
    }
    

变量命名惯例

变量名称一般遵循驼峰法,但遇到特有名词时,需要遵循以下规则:

  • 如果变量为私有,且特有名词为首个单词,则使用小写,如 apiClient
  • 其它情况都应当使用该名词原有的写法,如 APIClientrepoIDUserID

下面列举了一些常见的特有名词:

// 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,
}
image

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:freelang

查看原文:Golang命名规范

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
14961 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏