Go中`go get`和`go install`的区别是什么?
你好!我最近开始学习Go,并试图弄清楚依赖管理和项目构建。我经常看到使用`go get`和`go install`命令,但不太明白它们之间的区别。
例如,我想安装用于负载测试的`hey`工具。文档中写道:`go get -u github.com/rakyll/hey`和`go install github.com/rakyll/hey@latest`。两个命令似乎都下载并安装程序,但我注意到在`go get`之后,二进制文件出现在`$GOPATH/bin`中,而在`go install`之后,也出现在那里,但项目文件夹中出现了`go.sum`文件。
我还尝试使用`go get`将库添加到我的项目中:`go get github.com/gin-gonic/gin`。之后,`go.mod`中出现了一行依赖项,`go.sum`中出现了哈希值。但我读到,在Go的新版本(1.16+)中,`go get`不推荐用于安装二进制文件,而只用于管理依赖项。
你能解释一下具体的区别吗?我应该在什么时候使用它们?