本文中译于官方FAQ
Go项目的用法
Google在内部使用Go吗?
是的。Go在Google内部的生产中被广泛使用。一个简单的例子是golang.org后面的服务器 。它只是godoc 在Google App Engine上的生产配置中运行的文档服务器 。
更为重要的实例是Google的下载服务器,dl.google.com该服务器可提供Chrome二进制文件和其他大型可安装程序(例如apt-get 程序包)。
Go并不是Google唯一使用的语言,它远非它所用,但它是许多领域的关键语言,包括 站点可靠性工程(SRE) 和大规模数据处理。
还有哪些公司使用Go?
Go的使用在全球范围内都在增长,特别是但绝不是在云计算领域中。用Go编写的几个主要的云基础架构项目是Docker和Kubernetes,但还有更多。
但是,不仅仅是云。Go Wiki包含定期更新的页面,该 页面列出了许多使用Go的公司。
Wiki也有一个页面,其中包含指向 有关使用该语言的公司和项目的成功案例的链接 。
Go程序是否与C / C ++程序链接?
可以在相同的地址空间中一起使用C和Go,但这并不是很自然的选择,可能需要特殊的接口软件。同样,将C与Go代码链接会放弃Go提供的内存安全性和堆栈管理属性。有时,绝对有必要使用C库来解决问题,但是这样做总是会引入纯Go代码不存在的风险元素,因此请务必谨慎。
如果确实需要将C与Go一起使用,如何进行取决于Go编译器的实现。Go团队支持三种Go编译器实现。它们是gc,默认编译器 gcc,go使用GCC后端,而较不成熟的gollvm使用LLVM基础结构。
Gc使用与C不同的调用约定和链接器,因此不能直接从C程序调用,反之亦然。该cgo程序提供了“外部函数接口”的机制,以允许从Go代码安全地调用C库。SWIG将此功能扩展到C ++库。
您也可以将cgo和SWIG与Gccgo和一起使用gollvm。由于它们使用传统的API,因此也可以非常小心地将来自这些编译器的代码直接与GCC / LLVM编译的C或C ++程序链接。但是,要安全地执行此操作,需要了解所有相关语言的调用约定,以及从Go调用C或C ++时要注意的堆栈限制。
Go支持哪些IDE?
Go项目不包括自定义IDE,但已设计语言和库来简化源代码分析。结果,大多数知名的编辑器和IDE都直接或通过插件支持Go良好。
具有良好Go支持的知名IDE和编辑器列表包括Emacs,Vim,VSCode,Atom,Eclipse,Sublime,IntelliJ(通过名为Goland的自定义变体)等。您最喜欢的环境是在Go中进行编程的高效环境。
Go支持Google的protobuf吗?
一个单独的开源项目提供了必要的编译器插件和库。可从 github.com/golang/prot…获得。
我可以将“主页”翻译成另一种语言吗?
绝对地。我们鼓励开发人员以自己的语言制作Go语言网站。但是,如果您选择将Google徽标或品牌添加到您的网站(它不会出现在golang.org上),则需要遵守www.google.com/permissions…的准则