【FAQ】go的十万个为什么?-用法|Go主题月

155 阅读3分钟

本文中译于官方FAQ

原文地址:golang.org/doc/faq#Usa…

Go项目的用法

Google在内部使用Go吗?

是的。Go在Google内部的生产中被广泛使用。一个简单的例子是golang.org后面的服务器 。它只是godocGoogle 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…的准则