go程序由多个包组成,包是同一目录下编译在一起的源文件的集合。在一个源文件中定义的函数、类型、变量和常量对同一包中的所有其他源文件可见。
一个存储库包含一个或多个模块。模块是一起发布的相关 Go 包的集合。 Go 存储库通常只包含一个模块,位于存储库的根目录。一个名为 go.mod 的文件声明了模块路径:模块中所有包的导入路径前缀。该模块在包含其 go.mod 文件的目录中包含包以及该目录的子目录,直到包含另一个 go.mod 文件(如果有)的下一个子目录。
每个模块的路径不仅用作其包的导入路径前缀,而且还指示 go 命令应该在哪里下载它。例如,为了下载模块 golang.org/x/tools,go 命令将查询 https://golang.org/x/tools 指示的存储库。
新建包
导入路径是用于导入包的字符串。包的导入路径是其模块路径与其在模块内的子目录相连。例如,模块 github.com/google/go-cmp 在目录 cmp/ 中包含一个包。该包的导入路径是 github.com/google/go-cmp/cmp。标准库中的包没有模块路径前缀。
go env -w GOBIN=/somewhere/else/bin
要取消设置先前由 go env -w 设置的变量,请使用 go env -u
mkdir greetings
cd greetings
go mod init example.com/greetings
// 创建go.mod 用来追踪代码的依赖项。在代码中添加依赖项时,go.mod 文件将列出代码所依赖的版本,这使构建可重现以及控制要使用的模块版本。
// 添加本地依赖
go mod edit -replace example.com/greetings=../greetings
// 下载依赖
go mod tidy
模块依赖会自动下载到 GOPATH 环境变量指示的目录的 pkg/mod 子目录中。
// 删除所有下载的模块
go clean -modcache
安装目录由 GOPATH 和 GOBIN 环境变量控制。如果设置了 GOBIN,二进制文件将安装到该目录。如果设置了 GOPATH,二进制文件将安装到 GOPATH 列表中第一个目录的 bin 子目录中。否则,二进制文件将安装到默认 GOPATH($HOME/go 或 %USERPROFILE%\go)的 bin 子目录中。
go install 模块路径
go install example/user/hello
go install .
// 模块目录内
go install
export PATH=$PATH:$(dirname $(go list -f '{{.Target}}' .))
将安装的模块添加到PATH中,方便执行
在模块内新建文件夹,然后编写go 文件,源码文件标识新的包名,然后执行go build 。
go build 不会产生输出文件。它将编译的包保存在本地构建缓存中。
然后使用go install 安装模块