Golang的命名规范及最佳实践(推荐!)

 更新时间:2023年10月18日 11:38:09   作者:LJF_  
这篇文章主要给大家介绍了关于Golang的命名规范及最佳实践的相关资料,命名规则涉及变量、常量、全局函数、结构、接口、方法等的命名,文中介绍的非常详细,需要的朋友可以参考下

前言

Golang是一门区分大小写的语言。

命名规则涉及到:变量,常量,全局函数,结构,接口,方法。

一、大小写规范

  • 任何需要对外暴露的名字,都必须以大写字母开头。

    当命名以1个大写字母开头时,如:GetUserName,那么使用这种形式的标识符的对象,就可以被外部包的代码使用(外部需要先导入这个包),这个过程也被称为导出。

  • 不需要对外暴露的名字,以小写字母开头。

    当命名以1个小写字母开头时,如:getUserName,那么该对象就是对包外不可见的,但是在整个包的内部都是可见并且可用的。

二、包的命名规范

  • 保持包名称和目录名称一致。即package main对应main的文件夹目录
  • 尽量采用一些简短直观的包名称,不与标准库产生冲突。
  • 包名称一般为全小写的单词,不使用下划线或者混合的大小写。

示例:

package dao
package service

三、文件的命名规范

  • 尽量采用一些简短直观的文件名称。
  • 文件名称一般为小写的单词,使用下划线分隔各个单词。

示例:

customer_dao.go

四、结构体的命名规范

  • 命名简短直观。
  • 一般采用驼峰命名法,首字母根据访问情况控制大写或小写。
  • struct的声明和初始化采用多行书写。

示例:

type CustomerOrder struct {
    Name string
    Address string
}
order := CustomerOrder{"Tom", "北京市海淀区"}

五、接口/函数的命名规范

  • 命名简短直观。
  • 和结构体类似,一般采用驼峰命名法,首字母根据访问情况控制大写或小写。
  • 以大写字母开头的函数(公有,包外可见),应该添加注释。
  • 声明和初始化采用多行书写。
  • 单个接口/函数的命名一般以er结尾作为后缀,例如:Reader, Writer

示例:

type Reader interface {
    Read(p []byte) (n int, err error)
}

六、变量的命名规范

  • 命名简短直观。

  • 和结构体、函数/接口类似,一般采用驼峰命名法,首字母根据访问情况控制大写或小写。

  • 如果遇到特有名词(缩写或简称,如:DNS),需要遵循以下规则:

    若变量为私有,且特有名词为首个单词,则全部小写,如:appService

    若变量为公有,则特有名词全部大写。

    若变量为bool类型,则名称以Has, Is, Can, Allow开头。

示例:

var isExit bool
var hasConflict bool
var canManage bool
var allowGitHook bool

七、常量的命名规范

  • 命名简短直观。
  • 单词使用全部大写,并使用下划线分词。
  • 若为枚举类型的常量,则需要先创建相应类型。

示例:

type Scheme string		//为枚举类型常量创建相应类型
const {
    HTTP Scheme = "http"
    HTTPS Scheme = "https"
}

八、错误处理的命名规范

错误处理的原则:

不能丢弃任何有返回err的调用,不使用_丢弃,必须全部处理。

接收到错误时,要么返回err,或者使用log记录下来,尽早return。

一旦有错误发生,马上返回,尽量不使用panic,除非知道错误处理时应该做什么。

如果用英文进行错误描述,必须为小写,不需要使用标点结尾,采用独立的错误流进行处理。

示例:

// 正确写法
// 若产生错误
if err != nil {
    // 进行错误处理
    return //或者continue
}
// 若没产生错误,则进入正常代码

// 错误写法
if err != nil {
    // 进行错误处理
    return //或者continue
} else {
    // 正常代码
}

九、单元测试的命名规范

  • 一般情况下,测试用例函数名称以Test开头,如:TestExample
  • 每个重要的函数都要首先编写测试用例,测试用例和正规代码一起提交,方便进行回归测试。
  • 单元测试文件名,一般使用小写单词,用下划线连接,命名示例为:example_test.go

十、系统的预定义标识符

除了保留关键字之外,Golang语言系统还提供了36个预定义标识符,包括基础数据类型系统内嵌函数(不需要引入包,可以直接使用的函数)。

预定义标识符预定义标识符预定义标识符预定义标识符预定义标识符预定义标识符
appendboolbytecapclosecomplex
complex64complex128uint16copyfalsefloat32
float64imagintint8int16uint32
int32int64itoalenmakenew
nilpanicuint64printprintlnreal
recoverstringtrueuintuint8uintprt

总结 

到此这篇关于Golang的命名规范及最佳实践的文章就介绍到这了,更多相关Golang命名规范内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言中JWT的创建和解析操作详解

    Go语言中JWT的创建和解析操作详解

    JWT的全名是Json web token,是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准,这篇文章主要介绍了在Go语言中JWT的创建和解析操作,感兴趣的同学可以参考下文
    2023-05-05
  • go语言中sort包的实现方法与应用详解

    go语言中sort包的实现方法与应用详解

    golang中也实现了排序算法的包sort包,所以下面这篇文章主要给大家介绍了关于go语言中sort包的实现方法与应用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • 利用golang的字符串解决leetcode翻转字符串里的单词

    利用golang的字符串解决leetcode翻转字符串里的单词

    这篇文章主要介绍了利用golang的字符串解决leetcode翻转字符串里的单词,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go 并发编程协程及调度机制详情

    Go 并发编程协程及调度机制详情

    这篇文章主要介绍了Go并发编程协程及调度机制详情,协程是Go语言最大的特色之一,goroutine的实现其实是通过协程,更多相关内容需要的朋友可以参考一下
    2022-09-09
  • Go单体服务开发最佳实践总结

    Go单体服务开发最佳实践总结

    这篇文章主要介绍了Go单体服务开发最佳实践,通过本文详细跟大家分享一下如何使用 go-zero 快速开发一个有多个模块的单体服务,需要的朋友可以参考下
    2022-04-04
  • Golang中使用Swagger生成API文档的流程步骤

    Golang中使用Swagger生成API文档的流程步骤

    Swagger 是一款强大的 API 文档生成工具,可以帮助开发者轻松创建、管理和展示 RESTful API 文档,在本文中,我们将介绍如何在 Golang 项目中使用 Swagger 来生成 API 文档,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-07-07
  • golang中json操作的完全指南

    golang中json操作的完全指南

    golang标准库有一个名叫encoding/json的包,包含了JSON的序列化(Marshal)和反序列化(Unmarshal)的能力,下面这篇文章主要给大家介绍了关于golang中json操作的相关资料,需要的朋友可以参考下
    2022-07-07
  • go module使用本地包的方法示例

    go module使用本地包的方法示例

    这篇文章主要介绍了go module使用本地包的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • 一文详解Golang中字符串的常见错误

    一文详解Golang中字符串的常见错误

    这篇文章主要来和大家深入讨论一下Golang 中的字符串,并查看一些不同的场景,以避免常见错误,对大家掌握golang有一定的帮助,需要的可以了解下
    2023-10-10
  • Go语言jwt跨域鉴权的实现实例

    Go语言jwt跨域鉴权的实现实例

    本文详细的介绍了JWT的基本概念,包括JWT的组成部分和签名方法,及生成和解析JWT和设置认证中间件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11

最新评论