go run command

2024-07-29 08:34:49 浏览数 (2)

1.简介

编译并运行 Go 程序。

2.格式

代码语言:javascript复制
go run [build flags] [-exec xprog] package [arguments...]

run 编译并运行指定的 main 包。

通常,main 包被指定为来自单个目录的 .go 源文件列表,但它也可能是导入路径、文件系统路径或与单个已知包匹配的模式,例如go run .go run my/cmd

如果包参数有版本后缀(如 @latest 或 @v1.0.0),go run 将以模块感知模式构建程序,忽略当前目录或任何父目录中的 go.mod 文件(如果有)。这对于运行程序而不影响主模块的依赖项很有用。

如果包参数没有版本后缀,“go run”可能会在模块感知模式或 GOPATH 模式下运行,具体取决于 GO111MODULE 环境变量和 go.mod 文件是否存在。有关详细信息,请参阅“go help modules”。如果启用了模块感知模式,“go run”将在主模块的上下文中运行。

默认情况下,“go run”直接运行已编译的二进制文件:“a.out 参数…”。如果给出了 -exec 标志,“go run”将使用 xprog 调用二进制文件:

代码语言:javascript复制
xprog a.out arguments...

如果未给出 -exec 标志,GOOS 或 GOARCH 与系统默认值不同,并且可以在当前搜索路径上找到名为 go_KaTeX parse error: Expected group after '_' at position 5: GOOS_̲GOARCH_exec 的程序,则“go run”使用该程序调用二进制文件,例如“go_js_wasm_exec a.out 参数…”。当模拟器或其他执行方法可用时,这允许执行交叉编译的程序。

默认情况下,“go run”会编译二进制文件而不生成调试器使用的信息,以减少构建时间。要将调试器信息包含在二进制文件中,请使用“go build”。

有关构建标志的更多信息,请参阅“go help build”。有关指定包的更多信息,请参阅“go help packages”。

3.示例

(1)运行单个源文件。

代码语言:javascript复制
go run main.go

(2)运行多个源文件。

代码语言:javascript复制
go run file1.go file2.go

(3)运行当前目录的 main 包。

代码语言:javascript复制
go run .

(4)传递参数给程序。

代码语言:javascript复制
go run . arg1 arg2

这条命令会编译并运行当前目录的 main 包,并将 arg1 和 arg2 作为程序的参数传递给它。

(6)指定包名运行。

代码语言:javascript复制
go run github.com/user/project/pkg

这条命令会编译并运行指定包的入口文件。

(7)使用 build flags。

例如根据指定的 build tags 编译并运行 main.go,例如 -tags 参数可以指定 production 或 debug 等标签。

代码语言:javascript复制
go run -tags production main.go

再比如不实际运行程序,而是显示编译过程中的详细信息,包括命令行参数和优化器的处理步骤。

代码语言:javascript复制
go run -n main.go

4.注意事项

go run 仅用于临时运行代码,不会生成可执行文件。对于正式发布的程序,请使用 go build。

通过 go run 运行代码时,Go 语言会在运行前先执行编译操作,因此首次运行可能会花费一些时间。

5.常见用途

go run 是一个强大而灵活的工具,为开发者提供了便捷的代码测试和验证方式,同时也为调试和排查问题提供了方便。通过合理使用 go run,能更高效地进行 Go 语言开发。

常见用途:

  • 快速测试和验证代码逻辑。
  • 临时运行调试代码。
  • 运行单个文件或多个文件,避免生成不必要的可执行文件。
  • 通过传递参数测试不同的输入。

参考文献

Command Documentation go command documentation

0 人点赞