Go语言精进之路读书笔记(第二部分-项目结构、代码风格与标识符命名)
- 开源代码
- 2025-09-07 00:27:02

说明:《Go语言精进之路》第一部分-熟知Go语言的一切,不在博客中做读书笔记了,大家可以自己读一读,每个人心里都会有自己对Go语言的认识和理解。
直接从第二部分-项目接口、代码风格与标识符命名开始
第二章目录如下 第5条 使用公认且广泛使用的项目结构第6条 提交前使用gofmt格式化代码第7条 使用Go命名惯例对标识符进行命名 第5条重点第5条重点描述了Go项目的结构,分别是二进制可执行文件的Go项目结构和只构建库的Go项目结构。
(1)二进制可执行文件的Go项目
LICENSE/README.md 都是常见的文件
Makefile是构建脚本
cmd目录:可执行文件对应的main包的源文件,有几个main包就对应几个可执行文件,cmd目录也可以改为app目录
go.mod/go.sum:Go语言依赖管理的配置文件,类似java中的maven或者gradle
pkg目录:项目自身依赖的一些库和包文件,pkg目录也可以改为lib目录
vendor目录:可选,早期Go中使用的依赖管理,目前构建使用go module
(2)只构建库的Go项目结构
更加简单,只有lib目录了
(3)internal目录
对于不想要暴露外部引用的包都可以新建internal目录后,放在internal目录下
第6条重点学会使用gofmt格式化代码,使用下面命令查看gofmt命令的使用
第7条重点包名采用小写的单个单词命名,比如zip,list等
包名可以不唯一,但是导入包的路径是唯一的,类似java中类名可以一样,全路径类型不一样就行
下图中展示了在golang中如果包名相同时,该如何使用,下图存在2个相同的包log,它们分别位于
/lib/fastlog/log和lib/slowlog/log。在main包中,如果要同时使用这2个包的话,我们需要像如下方式使用,使用slowlog显式包名指代slowlog下的log包 package main import ( "go-learn/lib/fastlog/log" slowlog "go-learn/lib/slowlog/log" ) func main() { println(log.LogLevel) println(slowlog.LogLevel) }变量名命名简短,这和java区别很大,在java中变量名一般很长,比如userList,但是在Go中,建议使用users表示,不建议带上类型名称。
Go语言精进之路读书笔记(第二部分-项目结构、代码风格与标识符命名)由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Go语言精进之路读书笔记(第二部分-项目结构、代码风格与标识符命名)”