首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google的Golang是解释器还是编译器?

Google的Golang是解释器还是编译器?
EN

Stack Overflow用户
提问于 2012-09-03 21:37:36
回答 2查看 26.7K关注 0票数 41

我一直在研究Golang,我发现它有一个编译器。但是,它是将Go编译成汇编级代码,还是只是将其转换为BYTECODES,然后调用该编译?我的意思是,即使在PHP中,我们也能够将其转换为BYTECODES,并具有更快的性能。Golang是系统级编程和编译的替代品吗?

EN

回答 2

Stack Overflow用户

发布于 2012-09-03 21:47:43

这是一个真正的编译器(事实上它嵌入了2个编译器),它使完全自给自足的可执行程序。您不需要任何补充库或任何类型的运行时来在您的服务器上执行它。您只需为您的目标计算机架构编译它即可。

来自the documentation

有两个官方的Go编译器工具链。本文主要介绍gc Go编译器和工具(6g、8g等)。有关如何使用gccgo的信息,gccgo是一种使用GCC后端的更传统的编译器,请参阅设置和使用gccgo。

Go编译器支持三种指令集。对于不同的架构,编译器的质量有很大的不同。

amd64 (也称为x86-64);6g、6l、6c、6aA成熟的实现。编译器有一个有效的优化器(注册器),并生成良好的代码(尽管gccgo有时可以做得更好)。

386 (也称为x86或x86-32);8g、8l、8c、8a,与amd64端口相当。

arm (也称为ARM);5g、5l、5c、5a仅支持Linux二进制文件。与其他端口相比,使用范围较小,因此测试不够彻底。

除了低级操作系统接口代码之外,所有端口的运行时支持都是相同的,包括标记和清除垃圾收集器、高效的数组和字符串切片,以及对高效goroutines的支持,例如按需增长和缩小的堆栈。

编译器可以针对FreeBSD、Linux、NetBSD、OpenBSD、OS (Darwin)和Windows操作系统。下面对环境变量的讨论中列出了支持的完整组合集。

在服务器上,您通常以amd64平台为目标。

请注意,Go的编译速度是众所周知的。在部署服务器程序时,我不会在开发计算机上针对不同的平台进行构建:我会部署源代码并直接在生产服务器上进行编译。自从Go1以来,我从来没有让代码在一个平台上编译,而不是在另一个平台上编译。

在Windows上,我可以在我的开发计算机上制作一个exe,然后简单地将这个exe发送给那些从未安装过任何Go相关程序的人。

票数 64
EN

Stack Overflow用户

发布于 2020-10-15 10:50:13

Go可以快速编译成机器码,同时还具有垃圾收集的便利性和运行时反射的能力。它是一种快速的、静态类型的编译语言,感觉像是一种动态类型的解释型语言。

来源- golang.org

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12249364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档