最新go get 和 go install 详解
go版本1.20
1、在Go中具有许多第三方包,我们可以通过import导入这些包,并在程序中使用。
我们可以在程序中可以使用可以使用go get
和go install
命令下载并安装第三方包,并导入我们的程序中。
基本语法为:
go get [package]
go install [package]
那么go get
和 go install
命令有什么区别,分别在什么情况下使用呢?
2、get和install命令区别。
get命令用于从远程拉取包的源代码并存放在你的工作区,如果源代码为可执行代码,它还会紧接着执行go install
,将源码编译为可执行文件。并存放在bin目录下。
例如:运行
go get example.com/package
在有需要时,可以使用 @ 符号指定特定的版本。例如:
go get example.com/package@v1.1.1
在最新的Go1.20中,Go 将会下载 example.com/package 的源代码,并将其安装到你的工作区的pkg文件夹下的mod文件夹中。
如果有些Go包为命令行工具,那么它将会紧接着执行install命令把命令行的可执行文件放置在你的 bin 目录下。如果你希望只拉取包,而不下载可执行文件,那么你可以运行:
go get -d example.com/package
如果你不知道你的工作区,你可以使用go env | grep GOPATH
查看你当前工作区,
可以使用go env | grep GOBIN
,查看你的可执行文件存放的bin目录。
install命令用于编译并安装包。它会将远程包的二进制文件(即可执行文件)安装到工作区的 bin 目录下,而不会下载包的源代码。
例如运行:
go install example.com/package
将不会下载源代码,只会下载命令行的可执行代码。
3、get可选参数。
最后贴一个可选参数。
get命令的可选参数
附加参数 | 备注 |
---|---|
-v | 显示操作流程的日志及信息,方便检查错误 |
-u | 下载并安装所有的包和依赖的包的,以保证它们都是最新的版本,然后重新编译和安装。如果不包含该标志参数的话,而且如果该包本地已经存在,那么这个包的代码将不会被自动更新。 |
-d | 只下载代码包,不安装代码包 |
-insecure | 允许使用不安全的 HTTP 方式进行下载操作 |
-t | 同时也下载需要为运行测试所需要的包 |
-fix | 在下载代码包后先运行一个用于根据当前 Go 语言版本修正代码的工具,然后再安装代码包 |
install命令可选参数
参数名 | 格式 | 含义 |
---|---|---|
-o | -o file | 指定编译后二进制文件名 |
-a | -a | 强制重新编译涉及的依赖 |
-s | -s | 省略符号表并调试信息 |
-w | -w | 省略 DWARF 符号表 |
-p | -p | 指定编译过程中的并发数,默认为 CPU 数 |
-work | -work | 设置该参数后不会在程序结束后删除编译的临时文件,可用于查看编译生成的文件 |
-n | -n | 加上该参数可以查看编译的过程,但不会继续执行编译后的二进制文件 |
-x | -x | 加上该参数可以查看编译的过程,会继续执行编译后的二进制文件 |