我一直在研究Golang,我发现它有一个编译器。 但它是将它编译成汇编级代码还是只是将其转换为BYTECODES然后调用该编译?我的意思是即使在PHP中我们也能够将其转换为BYTECODES并具有更快的性能。 golang是否可以替换系统级编程和编译?
答案 0 :(得分:44)
这实际上是一个编译器(事实上它嵌入了2个编译器)并且它使完全自给自足的可执行文件。您不需要任何补充库或任何类型的运行时来在服务器上执行它。您只需要为目标计算机体系结构编译它。
有两个官方的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