googles GOLANG是解释器还是编译器?

时间:2012-09-03 13:37:36

标签: system gcc go

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

2 个答案:

答案 0 :(得分:44)

这实际上是一个编译器(事实上它嵌入了2个编译器)并且它使完全自给自足的可执行文件。您不需要任何补充库或任何类型的运行时来在服务器上执行它。您只需要为目标计算机体系结构编译它。

来自the documentation

  

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

     

Go编译器支持三个指令集。有重要的   不同编译器质量的差异   架构。

     

amd64(a.k.a. x86-64); 6G,6升,6C,6A   成熟的实施。该   编译器有一个有效的优化器(寄存器)并生成良好的   代码(虽然gccgo有时可以做得更好)。

     

386(a.k.a. x86或x86-32); 8G,8升,8C,图8a   可与amd64端口相媲美。

     

arm(a.k.a。ARM);如图5G所示,5L,5C,图5A   仅支持Linux二进制文件。使用不太广泛   其他端口,因此没有经过彻底测试。

     

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

     

编译器可以定位FreeBSD,Linux,NetBSD,OpenBSD,OS X.   (达尔文)和Windows操作系统。全套支持   组合列在环境变量的讨论中   下方。

在服务器上,您通常会定位到amd64平台。

请注意,Go以编译速度而闻名。在部署我的服务器程序时,我不为开发计算机上的不同平台构建:我部署源代码并直接在生产服务器上编译。从Go1开始,我从来没有在一个平台上编译代码而没有编译其他平台。

在Windows上,我在我的开发计算机上制作exe时没有任何问题,只需将此exe发送给从未安装任何Go相关内容的人。

答案 1 :(得分:0)

Go可以快速编译为机器代码,但具有垃圾回收的便利性和运行时反射的功能。这是一种快速的,静态类型的编译语言,感觉就像是一种动态类型的解释语言。

来源-golang.org