项目搭建

go项目的搭建是非常简单的,你随便找一个空文件夹,创建一个go.mod文件和一个main.go文件,一个最简易的项目就出来了,你可以围绕main.go不断拓展你的业务,但是,这并不适合项目膨胀。
在提到项目文件结构之前,我想先对go.mod做几点标记。

首先,mod文件应该放在你的项目的根目录下,不要将他放到项目中的哪个文件夹下,对于整个项目而言,go.mod所在的位置就是项目根路径,对于同项目不同包的引用都是参照go.mod的位置和包声明的。

比如,go.mod文件内容如下:

module example.com
go 1.18
/RootPath/cmd/myentry/main.go/RootPath/internal/decrypt/decrypt.goDecrypt()main.goexample.com/internal/decryptdecrypt.Decrypt()
GOPATHGOPATH.../src/
GOPATHGO111MODULEGOPATHgo.mod/binGOBINGOPATH/build
项目结构

上面我提到了一些子路径,如此这般的项目整体规划并不是规定,也不是规则,更不是官方的建议。
对于项目如何搭建、文件结构如何设计,其实都是开发者自己的选择和体验。
甚至,对于小型项目、玩具项目,你甚至不必去管文件结构。那只是种费力不讨好的事情。还有可能消耗掉新手对于这门语言的耐性。

go run main.go

你甚至不需要IDE。

但是,如果你对于项目的迭代、膨胀是有预期的,且项目内容比较多以至于如果不进行项目管理、文件结构设计的话,会让开发体验降低,那么我比较推荐你学习一下这篇文章中的项目结构规范。

再强调一遍,这不是规定、也不是规则、更不是建议,作为参考即可。
我在这里也做了个简单的总结:

/*
--Project path
  --bin     可执行文件
  --build   编译构建结果
  --cmd     代码,甚至可以只有一个main
    --具体包名
  --config  配置文件
  --docs    文档文件
  --example 样例应用程序
  --internal  不便在cmd做展示的、需要隐藏的、需要加密的代码
  --pkg     外部应用程序使用的代码库
  --script  脚本
  --test    测试代码
  --tools   编写的工具,可以从pkg、internal引入代码
  --vender  应用程序依赖项
  go.mod
*/

或许你会注意到,这里并没有/src路径的座位,这是因为src是java的编程习惯,java通过src分割了框架在做的事情,和开发者写下的事情。
而Go由于模块引入的便捷,以及语言本身的特性,其实并不需要这么做。
对于上面这样的文件结构设计来说,cmd并不会存放太多的代码,大多数的代码都放在了internal(需要保证私有性的)、tools、vender、pkg中。

当然,即便是用了src作为具体代码路径,也不会产生什么影响。

项目编译
go build
go install

具体的命令使用就不多赘述了。