Go语言的目录布局和`got get ...`

Directory layout and `got get ...` for Go language

假设我在目录 project/ 中有 main.go 并且有 main.go 使用的子目录 project/pkg/mydb/

要在 mydb/ 中对我的代码添加依赖项,我应该 运行 go get ... 在该子目录 mydb/ 或顶级项目目录(project/)?

还有 main.go 应该驻留的地方:直接在 project/project/src/?

Go 只考虑模块和包。通常你的模块是 project/ 并且可以由一个或几个包组成(project/pkg/mydb 可以是其中之一)

只有go模块有依赖。所以你应该 运行 go getproject

main.go可以在任何你想要的地方,它只是改变你是否需要 运行 go build .go build ./src

(这仅在您使用 go 模块时适用,因此如果您的 project 中有 go.mod。但如果您无论如何都应该使用它们)