Go

分享:

这些问题仅向选择 Go 作为其三种主要编程语言之一的受访者显示。

您使用 Go 做什么?

Go 以其效率和速度、并发特性、强大的标准库、简单性和可读性而闻名,绝对是一种生产就绪的语言。因此,使用 Go 进行工作的开发者比例不断增加也就不足为奇了。Go 被许多大公司用于生产,包括 Google、Dropbox、Microsoft、PayPal、Netflix 等。

使用 Go 开发时,您主要使用哪种操作系统?

此数据与 Go 团队的调查有些一致。Go 经常被称为“云语言”,因为其广泛用于构建云原生应用程序和 DevOps 工具。这解释了 Linux 和 macOS 在 Go 开发者中的受欢迎程度。

您是否同时使用多个版本的 Go?

只有大约三分之一的 Go 开发者一次处理一个项目,其余开发者均同时处理多个项目。

您使用哪个(哪些)版本的 Go?

Go 具有出色的向后兼容性,但有些用户仍然同时运行多个版本。用例之一是开发者将其 CI 设为与两个或三个不同版本的 Go 一起运行以捕获回归和检测其他问题。

您使用哪种模板引擎进行 Go 开发?

html/template 占据首位是有道理的。此软件包会自动转义潜在危险内容,例如用户生成的数据,并有助于避免代码注入攻击。

您会在一个项目中将哪种(哪些)语言与 Go 一起使用?

根据最近的 Go 调查,37% 的 Go 开发者使用 Go 构建网站和 Web 服务。这些数据解释了为什么这么多开发者在同一项目中使用 JavaScript、TypeScript 和 Go。

Python 的高排名可能是由于许多 Python 项目迁移到 Go 的趋势。当开发者决定向使用 Python 编写的项目添加新服务时,他们倾向于使用效率高、具有并发支持并在网络和 Web 服务方面性能强大的 Go。这种方式有其缺点,但可以让开发者避免重写代码库。

值得注意的是,GoLand 提供了对 JavaScript 和 TypeScript 的开箱即用支持。您还可以安装 Python Community Edition 插件并利用其 Python 支持。

您使用 Go 开发什么类型的软件?

您是否使用工作区 (go.work)?

Go 1.18 中引入了工作区模式,允许开发者同时处理多个模块,而无需为每个模块编辑 go.mod 文件。借助 Go 工作区,您可以使用 go.work 文件控制所有依赖项。

您经常使用哪种(哪些)Go Web 框架?

与去年一样,Gin 框架是最流行的 Web 开发解决方案,而标准库中的 net/http 软件包仍然保持着自己的地位。查看我们的 Go REST 指南,详细了解 Gin 与 net/http 之间的差异。

您使用什么类型的 Go 模块代理?

您在项目中是否使用 vendoring?

在 Go 中,vendoring 是指为特定项目创建所需的依赖项本地副本,并将这些副本包含在文件结构中。这样一来,您可以确保项目包含构建应用程序所需的所有代码,并且不必依赖于从外部源下载依赖项。

与大多数方式一样,vendoring 也有一些缺点。部分开发者认为这会降低代码仓库的透明度,并且使更改更难审查。由于 Go 代理等功能,Go 模块可以帮助开发者摆脱 vendoring,这样可以缓存依赖项并确保正确的软件包版本始终可用。

您经常使用哪种 Go 路由器?

热门路由器 gorilla/mux 和 go-chi/chi 仍在标准库之下。您可以阅读 Go REST 指南深入了解 gorilla/mux 与标准库之间的差异。

您经常使用哪种(哪些)测试框架?

您的项目中有多少个外部依赖项?

您在 IDE/编辑器中使用的代码库有多大?

您是否使用泛型?

Go 开发者一直在寻求泛型支持,支持最终于 2022 年 3 月添加到 Go 1.18 中。大约一年后,超过 80% 的 Go 开发者正在使用或尝试过泛型。

您将 TinyGo 用于以下哪种(哪些)用途?

如果您需要为嵌入式系统或 WebAssembly 生成小型高效的程序,TinyGo 表现出色。如调查所示,TinyGo 也被用于创建 CLI。Go 拥有出色的标准库,但如果是构建仅执行基本任务的 CLI,则可能不需要全部功能。为此,TinyGo 是更好的选择,因为它可以让 CLI 保持小而精确。

您经常使用哪种(哪些)构建系统?

感谢您的参与!

我们真诚地希望您能发现我们的报告有用。与您的朋友和同事分享这份报告。

如果您有任何疑问或建议,请发送电子邮件至 surveys@jetbrains.com