我一直在研究Golang,我发现它有一个编译器.但它是将其编译为汇编级代码还是只是将其转换为BYTECODES然后调用该编译?我的意思是即使在PHP中我们也能够将其转换为BYTECODES并具有更快的性能.golang是否可以替换系统级编程和编译?
Den*_*ret 50
这实际上是一个编译器(事实上它嵌入了2个编译器)并且它使得完全自给自足的可执行文件.您不需要任何补充库或任何类型的运行时来在服务器上执行它.您只需为目标计算机体系结构编译它.
从文档:
有两个官方的Go编译器工具链.本文档重点介绍gc Go编译器和工具(6g,8g等).有关如何使用gccgo(使用GCC后端的更传统的编译器)的信息,请参阅设置和使用gccgo.
Go编译器支持三个指令集.不同体系结构的编译器质量存在重要差异.
amd64(又名x86-64); 6g,6l,6c,6a 一个成熟的实现.编译器有一个有效的优化器(寄存器)并生成良好的代码(尽管gccgo有时可以做得更好).
386(又名x86或x86-32); 8g,8l,8c,8a 可与amd64端口相媲美.
arm(又名ARM); 5g,5l,5c,5a 仅支持Linux二进制文件.使用不如其他端口广泛,因此没有经过全面测试.
除了低级操作系统接口代码之外,所有端口的运行时支持都是相同的,包括标记和清除垃圾收集器,高效的数组和字符串切片,以及对高效goroutine的支持,例如堆栈根据需求增长和缩小.
编译器可以针对FreeBSD,Linux,NetBSD,OpenBSD,OS X(Darwin)和Windows操作系统.下面的环境变量讨论中列出了完整的受支持组合集.
在服务器上,您通常会以amd64平台为目标.
请注意,Go以编译速度而闻名.在部署我的服务器程序时,我不为开发计算机上的不同平台构建:我部署源代码并直接在生产服务器上编译.从Go1开始,我从来没有在一个平台上编译代码而没有编译其他平台.
在Windows上我exe在我的开发计算机上制作一个没有问题,只是将它发送exe给从未安装任何Go相关的人.