特别放送 | 给你一份清晰、可直接套用的Go编码规范
该思维导图由 AI 生成,仅供参考
1. 代码风格
1.1 代码格式
- 深入了解
- 翻译
- 解释
- 总结
本文是一份关于Go编码规范的详实指南,作者孔令飞结合多年的Go项目开发经验,总结了包括代码风格、命名规范、注释规范、类型、控制结构、函数、GOPATH设置规范、依赖管理和最佳实践在内的九类规范。其中,强调了代码风格、命名规范、注释规范、类型、控制结构、函数、GOPATH设置规范、依赖管理和最佳实践等内容。对于想要编写高质量Go应用的开发者来说,是一份非常实用的参考手册。文章内容详实,涵盖了Go编码规范的方方面面。包括了文件命名、结构体命名、接口命名、变量命名、常量命名、错误的命名等内容。同时,还介绍了注释规范,包括包注释、变量/常量注释、结构体注释、方法注释、类型注释等。此外,还涉及了字符串、切片、结构体、控制结构等方面的规范。文章内容丰富,对于Go语言开发者来说是一份非常有价值的指南。文章总结了九类常用的编码规范,包括函数、defer、方法的接收器、嵌套、变量命名、GOPATH设置规范、依赖管理、最佳实践等。作者还提醒读者规范是可以根据项目需要制定的,但建议采纳业界沉淀下来的规范,并通过工具来确保规范的执行。
《Go 语言项目开发实战》,新⼈⾸单¥68
全部留言(36)
- 最新
- 精选
- 滴滴答答为什么函数参数尽量不用指针传递?如果是一个比较大的结构体,传指针不是更好吗?
作者回复: 如果传指针存在被意外修改的风险,如果结构体很大,也可以传指针
2021-06-1711 - NULL不认同的地方: 4.1字符串, 空字符串的判断 两种方式都可以 详见: https://stackoverflow.com/questions/18594330/what-is-the-best-way-to-test-for-an-empty-string-in-go 4.2切片, 空 slice 判断 应该是"如果你需要测试一个slice是否是空的,使用len(s) == 0来判断,而不应该用s == nil来判断" 详见Go语言圣经: https://books.studygolang.com/gopl-zh/ch4/ch4-02.html 描述不够准确定地方: 4.2切片, 声明 slice 描述不够准确 详见: https://github.com/golang/go/wiki/CodeReviewComments#declaring-empty-slices 补充: 可以根据需要指定cap, 减少内存分配次数, 降低gc压力, 如 make([]int, 0, 100) 6.函数, 尽量采用值传递,而非指针传递。 描述不够准确 详见: https://github.com/golang/go/wiki/CodeReviewComments#pass-values 6.1 函数参数, 尽量用值传递,非指针传递。 描述不够准确 详见: https://github.com/golang/go/wiki/CodeReviewComments#pass-values 6.函数, 传入参数是 map、slice、chan、interface ,不要传递指针。 描述不够准确, 如果是slice, 并且有append操作, 并且期望改变可以影响原函数, 应当传递指针 这与slice的底层结构有关, 两个value, 一个 pointer 这在"9.2 注意事项"第一条也有说明 详见: https://github.com/golang/go/blob/master/src/runtime/slice.go#L22 9. 最佳实践, 在编译时验证接口的符合性,例如: 描述不够准确 详见: https://github.com/xxjwxc/uber_go_guide_cn#toc8
作者回复: 6666,我再check下
2022-07-30归属地:广东29 - 苳冬驼峰命名 APIClient、UserID,如果遇到API+ID就是APIID这样连续两个全大写可读性很低啊
作者回复: 那是不是可以把API换成更具体的API名字呢
2021-06-243 - Vackine在1.2初始化结构体引用时,给的案例里面bad 和good的sval的方式是一模一样的啊?还有在切片初始化时不都建议提前制定容量,然后后面为什么在声明slice是时候,又不建议make的方式而用var 的方式?
作者回复: 如果不指定切片的cap,建议用var s []string
2021-06-173 - josephzxy想问1.2节里为什么“对于未导出的顶层常量和变量,使用 _ 作为前缀。”,有什么作用吗?首字母小写不是已经表明是未导出(unexported)了吗?谢谢!
作者回复: 比如:_version,看到这种命令方式,你就知道:这是个全局的未导出的变量。可以协助你使用变量,也就是通过变量名,你能知道该变量的作用域以及是否可导出。
2021-08-0542 - dll注释写中文才能说清楚的情况,该怎么规范注释呢
作者回复: 统一规范即可,要么全写中文,要么全写英文
2021-06-302 - Seven为方便团队都使用这份规范,需要写到开发文档里。请问这篇规范可以给个GitHub链接吗?这样方便更多人用,当然注明来自本课程也可以让更多人慕名学习。
作者回复: 目前没有Github链接。我们考虑下,感谢建议。
2021-06-262 - Geek_a4cca6老师,请问有学习班的群吗?
作者回复: 有的,看下iam项目/README,有我微信号,加我,我拉你
2021-06-2422 - Q空slice那里为啥要 先判断slice != nil 再判断 len(slice) > 0 呢?不判断不可以吗?
作者回复: 因为nil的silce,len(slice)也是0。 空slice指的是:slice=make([]int,0)这种情况,也即是:slice不为nil,但长度为0的slice。
2021-06-1942 - Fan请问go web 的项目结构目录有标准吗? 查资料查到一个社区标准(https://github.com/golang-standards/project-layout),但是褒贬不一。所以想问问您那的结构目录是怎么标准化的?
作者回复: 基本上与这个项目保持一致:https://github.com/golang-standards/project-layout 可以加我微信,我们详细交流下。项目根目录下的README文件中,有我微信号
2021-07-271