Go-编码规范(注释,变量名等基本规则)

简介: Go-编码规范(注释,变量名等基本规则)

格式化

使用gofmt进行格式化

注释

go有行注释和块注释

行注释

// 行注释

块注释

/*

块注释

*/

包的注释

/*

数据结构:单链表

author:lady_killer9

博客:https://blog.csdn.net/lady_killer9

增:尾插、头插、指定元素后插

删:头删、尾删、指定元素后删

头结点、尾节点:返回头结点、尾节点

长度:链表长度

查找:查找第一个val

// 遍历:

// for e := lst.Front(); e != nil; e = e.Next() {

//    // do something with e.Val

// }

*/


package singlelist

函数的注释

每个函数前都应该有注释,说明函数的功能(以函数名开头,方便使用godoc查找),参数,返回值

//Plus will return a+b

// a:a number

//b:another number

//return: a+b

func  Plus(a,b int) int

可导出的变量的注释

每个可导出的变量(首字母大写)都应该有注释

命名规范

  • 由26个英文字母大小写,0-9,组成,数字不可以开头
  • Golang中严格区分大小写
  • 标识符不能包含空格
  • 下划线”_”本身在Go中是一个特殊的标识符,称为空标识符。可以代表任何其它的标识符,但是它对应的值会被忽略(比如:忽略某个返回值)。所以仅能被作为占位符使用,不能作为标识符使用
  • 不能以系统保留关键字作为标识符,比如break,if 等等.…

包名

小写单词,简短有意义,尽量和所在文件夹名一致,不要和标准库冲突

-Go

----src

--------errors

-------------errors.go===>package errors

包名为 main 的包为应用程序的入口包

文件名

小写单词,下划线分隔

变量名/函数名/常量名

本包内:

驼峰法:第一个单词小写,如果后面有单词,首字母大写

包外可访问:

帕斯卡命名:每个单词都首字母大写

方法名

对于结构体的方法,和函数基本一致,Getter和Setter方法需要以Get或Set为前缀,例如,某结构体有name属性,对应的Getter和Setter方法名为GetName、SetName

结构体转为字符串的方法命名为String

接口

接口名称建议加er后缀,如 ReaderWriterFormatterCloseNotifier等,当然在标准库中我也看到过没有er后缀的接口。

分号

for中的使用很常见,由于if和switch接受初始化语句,也可使用 ; 分隔,例如,if中使用分号

if err:=recover();err!=nil{

    return err

}

缩进

不同层级一个Table(四个空格)

错误和异常

不宜使用过多的panic,尽可能使用error显示返回错误

函数

为增强可读性,不宜过多的使用bare return(返回值命名,return后什么也不写),尤其是有多个返回值,有多个分支时

函数返回error时,放在返回列表的最后一个,例如

func (file *File) Write(b []byte) (n int, err error)

更多Go相关内容:Go-Golang学习总结笔记

有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。


相关文章
|
Go
Go 语言的作用域规则及其特点
Go 语言的作用域规则及其特点
174 41
Go 语言的作用域规则及其特点
|
9月前
|
编译器 Go
Go 语言基础:包、函数、语句和注释解析
一个 Go 文件包含以下几个部分: 包声明 导入包 函数 语句和表达式 看下面的代码,更好地理解它:
73 0
|
8月前
|
算法 程序员 编译器
美丽的代码:规范go应用代码注释
【6月更文挑战第30天】本文介绍注释应与代码同步,避免误导,且关键点解释。使用LLVM构建编译器示例展示Go语言规范。注释虽有局限,但在解释复杂逻辑、业务规则时仍有其价值。程序员需平衡注释与代码的关系,创造更优的代码。
1117 0
美丽的代码:规范go应用代码注释
|
5月前
|
Go
go语言注释,标识符 | 17
go语言注释,标识符 | 17
|
6月前
|
安全 Go 开发者
理解Go语言中的大小写规则
【8月更文挑战第31天】
122 0
|
8月前
|
算法 Java Go
【经典算法】LeetCode 392 判断子序列(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 392 判断子序列(Java/C/Python3/Go实现含注释说明,Easy)
91 0
|
8月前
|
存储 算法 Java
【经典算法】LeetCode112. 路径总和(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode112. 路径总和(Java/C/Python3/Go实现含注释说明,Easy)
47 0
|
8月前
|
算法 Java Go
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
67 0
|
8月前
|
算法 Java Go
【经典算法】LeetCode 58.最后一个单词的长度(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 58.最后一个单词的长度(Java/C/Python3/Go实现含注释说明,Easy)
53 0
|
8月前
|
算法 Java 大数据
【经典算法】LeetCode 283. 移动零(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 283. 移动零(Java/C/Python3/Go实现含注释说明,Easy)
71 0

热门文章

最新文章