go build都做了什么?

go命令的作用取决于我们是针对“普通”包还是针对特殊"main"包运行它。

对于普通包

  • go build  构建你的包然后丢弃结果
  • go install构建然后将包安装$GOPATH/pkg在您的目录中。

对于命令(main包

  • go build  构建命令并将结果保留在当前工作目录中。
  • go install在临时目录中构建命令,然后将其移动到$GOPATH/bin.

传递给什么go build

您可以将想要构建的传递给go build。您还可以传递单个目录中的文件列表.go,然后将其视为指定单个包的源文件列表。

如果未提供包(导入路径),则构建将应用于当前目录。

导入路径可能包含一个或多个"..."通配符(在这种情况下它是一个模式)。 ...可以匹配任何字符串,例如net/...匹配net包及其任何子文件夹中的包。命令

go build ./...

经常用于在当前文件夹中构建包以及向下递归的所有包。在项目根目录中发出的此命令将构建完整的项目。

有关指定包的更多信息,请运行go help packages.

关于模块

Go 1.11 中引入了对 Go 模块的初步支持,从 Go 1.13 开始模块成为默认设置。当go从包含go.mod文件的文件夹(或当前文件夹的父文件夹之一)运行该工具时,该go工具以模块感知模式运行(旧模式称为GOPATH 模式)。

在模块感知模式下,GOPATH 不再定义构建期间导入的含义,但它仍然存储下载的依赖项(在 GOPATH/pkg/mod 中)和安装的命令(在 GOPATH/bin 中,除非设置了 GOBIN)。

构建模块时,构建的内容由构建列表指定。构建列表最初仅包含主模块(包含运行命令的目录的模块go),并且主模块的依赖项会递归地添加到构建列表中(依赖项的依赖项也会被添加)。

有关更多信息,请运行go help modules.


基本上,您可以用作go build检查是否可以构建包(及其依赖项),同时go install还(永久)将结果安装在$GOPATH.

go build如果一切正常,它将默默终止,如果无法构建/编译包,则会给出错误消息。

每当该go工具安装软件包或二进制文件时,它也会安装它所具有的任何依赖项,因此运行时go install还将自动安装您的程序所依赖的软件包(公开可用的“go gettable”软件包)。

首先,请阅读官方的如何编写 Go 代码页面。

有关该工具的更多信息go命令 go

您还可以通过运行以下命令获得更多帮助:

go help build

还值得注意的是,从 Go 1.5 开始还删除了( sourcego install )创建的可执行文件:go build

如果“go install”(不带参数,表示当前目录)成功,请删除“go build”编写的可执行文件(如果存在)。这可以避免留下陈旧的二进制文件......

要完成该列表,go run请将应用程序编译到临时文件夹中,然后启动该可执行二进制文件。当应用程序退出时,它会正确清理临时文件。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术的草台班子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值