Go:go run file.go 如何工作

54

命令 go buildgo install 将文件编译成二进制文件。 go run 命令会将文件编译还是解释执行呢?我在网上找不到解释,可能是我漏看了。感谢指点。谢谢!


2
请查看go help run以了解该命令的说明。 - Charlie Tumahai
7
使用-x选项运行其中任何一个命令,将会显示执行的所有命令。 - JimB
4个回答

46

这更或多或少相当于运行go build X.go -o /tmp/random-tmp-folder/exe && /tmp/random-tmp-folder/exe


1
当我输入 go run temp.go 后,我会发现有两个进程在运行。其中一个显示使用的命令是 go run temp.go,而另一个则更像是你所说的。 - Curious
这是一个程序 func main() { http.HandleFunc("/", hello) http.ListenAndServe(":8000", nil) } - Curious
3
好奇心驱使,这就是重点,“go run”会执行并在实际进程退出时完成运行。 - OneOfOne
这些由golang创建的临时文件的默认位置在哪里? - user12834955
它默认使用系统的tmp目录,在*nix上通常为/tmp - OneOfOne

16

go run 命令会编译并运行由命令行指定的 .go 文件组成的主包。该命令被编译到一个临时文件夹中。

go buildgo install 会检查目录中的文件,以确定哪些 .go 文件包含在主包中。


13

go run 命令在后台执行项目构建(也就是说,它会构建项目)。
而使用 --work 标志(go run --work main.go),您可以查看临时构建文件的位置。

此外,在官方文档(go1.11)中,您可以找到以下内容:

go run - 编译并运行命名的 Go 主包。

go build - 编译由导入路径指定的软件包及其依赖项,但不会安装结果。

go install - 编译并安装由导入路径指定的软件包。


5

和Java不同,Go语言创建的是一个依赖于特定机器的可执行文件,类似于C、C++。


2
在Java中,字节码不是在执行时生成的。它是在编译期间(javac命令)在编译代码的机器上生成的。字节码是平台无关的。特定的JVM实现是平台相关的,将负责运行代码。 - user07

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接