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 保持小而精确。

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

感谢您的参与!

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

加入 JetBrains Tech Insights Lab

参与调查和用户体验研究,让 JetBrains 产品更易用、更强大。参与我们的研究,您还将有机会获得奖励。

原始数据 即将发布

我们正在准备原始数据。您可以留下您的电子邮件地址,以便在可以下载时接收通知。

By submitting this form I agree to the JetBrains Privacy Policy

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