Go模块(go.mod)是Go 1.11起的官方包管理标准,取代GOPATH模式,允许任意目录初始化模块并记录依赖版本;错误嵌套模块、路径不一致或缺失go.mod会导致构建失败或导入错误。
什么是 Go 模块(go.mod)而不是 GOPATH
Go 1.11 起模块(go mod)成为官方包管理标准,它取代了旧的 GOPATH 工作模式。你不再需要把项目放在 $GOPATH/src 下;任意目录下执行 go mod init 就能初始化模块。模块根目录下会生成 go.mod 文件,记录模块路径和依赖版本。
常见错误:在已有 go.mod 的子目录里重复运行 go mod init,会创建嵌套模块,导致构建失败或导入解析混乱。
- 模块路径(如
github.com/yourname/mylib)应与代码未来可能被import的路径一致 - 若只是本地开发、不发布,路径可以是任意合法字符串(如
myproject),但别用main或保留字 -
go mod tidy会自动补全依赖并清理未使用项,建议每次增删 import 后运行
如何正确组织 Go 包结构
Go 中“包”由目录内所有 .go 文件共同组成,包名(package xxx)只需在同一目录下统一即可,不要求与目录名相同——但强烈建议保持一致,否则 import 时容易混淆。
典型结构示例: