Golang - "go run main.go" 和编译之间的区别

38

在使用Go编写一些脚本后,我想知道编译.go文件和后来执行go run FILE.go命令在性能等方面是否有区别。

如果我使用其中一种方法启动Web服务,是否有任何优势?


1
可能是重复的问题:Go:go run file.go如何工作 - JimB
3
在运行、构建、获取或安装时,通过添加“-x”标志来查看具体执行的内容。 - JimB
3个回答

60

go run 只是一种将编译和运行组合成单个步骤的快捷方式。虽然在开发过程中很有用,但在生产环境中使用时通常应该直接构建并运行二进制文件。


肯定不止这些 - 如果我在helloworld中计时println,使用go run运行比编译运行更快。我在一个更大的程序中注意到了这一点,并且发现它从helloworld一直成立。我很想知道为什么以及在什么时候结果会反转。 - 10 cls
1
@10cls 我在我的系统上没有注意到这样的行为。go run会将可执行文件写入临时目录,而go build会将其写入当前目录。也许你的临时目录是一个ramdisk? - Nicolas Garnier

7

针对本地开发环境,请使用 go run
针对生产环境,请使用 go install,相比于 go build 更好,因为它会安装包和依赖项,并提供 Go 工具链。


6
'

'go install' 命令会在 pkg 文件夹下创建共享库编译文件 package.a,同时在 bin 目录下创建可执行文件。

在开发过程中,'go run' 命令非常有用,因为它可以为您编译和运行代码,但不会在 pkg 和 src 文件夹中生成二进制文件。

'

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