go get
go get
它会执行两个操作- 第一个, 是先将远程的代码克隆到Go Path的 src 目录
- 那二个, 是执行
go install
命令- 那如果指定的包可以生成二进制文件
- 那它就会把这个二进制文件保存到这个 Go Path 的bin目录下面
- 这是
go install
命令执行的操作
- 如果只需要下载包,不执行go install呢?
- 那我们可以指定这个
-d
的参数 - 那
go get
只执行下载操作,不执行安装操作
- 那我们可以指定这个
go install
- 如果go指定的包可以生成可执行的二进制文件
- 那么
go install
会将生成的可执行的二进制文件,拷贝到这个 Go Path的bin
目录下面 - 那如果是一个普通包,它就会将编译生成的 .a 结尾的文件 放到这个Go Path 的
pkg
目录- 相当于编译缓存来提升后续的编译速度
- 怎么去判断一个包能不能生成可执行的二进制文件
- 在go语言中只有在main包中呢存在main函数的情况下才能生成可执行的文件
- 注意事项
go install
是建立在Go Path的基础上的, 它是无法在独立的目录中,使用这个go install 的go install
生成的可执行文件的名称,与包名是一致的go install
输出的目录是不通过使用命令来指定的
go get 与 go install 的区别
- 既然 go get 已经包含了go install的操作,为什么还需要 go install
- go get 的第一步是下载远程的依赖包, 如果你想使用本地的版本,就不需要下载了
- 这个时候就可以直接使用 go install
- 需要注意的是
- 在go的1.15版本以后, 如果没有本地包
- go install 也会从远程下载依赖包
go build
- go build 执行后默认会在当前目录下编译生成可执行文件
- 也可以通过参数去指定路径
- 跟 go install 不同的是, go build 不会将任何可执行文件复制到 Go Path 的bin目录下面
- 而 go install 会做这样一个操作
go run
go run
命令是用来编译并运行go文件的- 通常它是在开发过程中的一些测试的场景下会使用
go run
是不依赖 Go Pass 的- 只能编译可执行的 go文件
- 即文件中包含main包和main方法
- 非可执行的go文件使用go run执行会报错
关于 Go Path 目录
- Go Path 下面三个目录
src
下面存放的是源代码的文件pkg
下面存放的是编译后的文件bin
目录下面存放的是可执行文件