Ohhnews

分类导航

$ cd ..
Jetbrains Blog原文

2025年Go语言生态系统:框架、工具与开发者实践的关键趋势

#go语言#开发者生态#开发框架#ai辅助编程#静态代码分析

Go 今年迎来 16 岁生日。为庆祝这一里程碑,我们仔细研究了最新的开发者生态系统调查结果,并审视了 Go 生态系统在过去五年中的演变。

根据 JetBrains Data Playground 的数据,220 万专业开发者将 Go 作为他们的主要编程语言——是五年前的两倍。如果加上将 Go 作为次要语言的专业人士,这一数字将超过 500 万。

根据2025 年开发者生态系统报告,Go 仍然是首选的采用语言之一,11% 的软件开发者计划在未来 12 个月内采用 Go。与去年一样,它在 JetBrains 语言前景指数中排名第四,仅次于 Typescript、Rust 和 Python。

Go 开发者通常分为两类,有些角色会兼具两种类型:

  • Web 后端开发者,从事涉及微服务的 Web 应用程序开发。
  • DevOps 或站点可靠性工程师,管理 IT 基础设施平台(Kubernetes 或无服务器架构)。他们通常负责 Kubernetes 集群操作符、相关的 Go Web 微服务和用 Go、Python 或 Bash 编写的 CLI 工具,以及基础设施即代码和服务支持。

塑造 Go 生态系统的库

标准库

Go 的设计理念是“开箱即用”,而 Go 标准库是该语言最大的优势之一,通常足以满足大多数需求。开发者依赖它,因为它清晰、可靠、安全、高性能且简单。在 Go 文化中,“标准库优先”是默认方法;第三方库的添加主要是为了方便,而非必需。

然而,随着 Go 应用程序范围的扩大,生态系统也在不断发展,涌现出一系列广泛使用、可靠且推荐用于特定用例的工具。

主要的 Web 框架和路由器

让我们来看看自 2020 年以来 Go 框架和 Go 路由器的流行度变化。 [LOADING...]

注:总值超过 100%,因为这是一个多选问题。

net/http 包是标准库路由器,是 Go 开发者进行路由最常见的选择。它稳定且不依赖任何外部依赖。

近年来,chi 仍然是构建 Go HTTP 服务的热门替代方案。自 2020 年以来,其使用率略有增长,达到约 12% 的开发者。chi 是一个符合 Go 惯例的轻量级路由器,与 net/http 完全兼容,文档完善且积极维护。

gorilla/mux 曾是最常用、功能最强大的 HTTP 路由器,于 2023 年归档。此后,许多项目已迁移到 chi 或标准库,尤其是在 Go 1.22 在 http.ServeMux 中引入了模式路由之后。到 2025 年,17% 的 Go 开发者表示定期使用 gorilla/mux,低于 2020 年的 36%。由于遗留项目,其份额仍然可观,但预计会进一步下降。

2025 年最受欢迎的 Go Web 框架是 Gin、Echo 和 Fiber

Gin 稳步增长,2025 年有近一半的 Go 开发者(48%)使用它,高于 2020 年的 41%。虽然没有一个 Go Web 框架是唯一的“最佳”选择,但 Gin 作为最快、最成熟、最受推荐的选项之一,处于领先地位。

Fiber 于 2020 年推出,专注于速度和简洁性,也获得了关注。现在有 11% 的 Go 开发者使用它——接近 Echo (16%),并领先于 Beego (4%),后者的受欢迎程度持续下降。

测试框架和性能工具

Go 拥有强大的测试和基准测试文化,这根植于其设计理念:测试应该简单、一致,并作为日常开发的一部分,而不是事后才考虑。这一理念反映在语言本身:标准库包含 testing 包,支持单元测试、基准测试、示例和模糊测试。Go 开发者被期望使用 pprof 等内置工具进行性能分析和测量。 [LOADING...]

注:总值超过 100%,因为这是一个多选问题。

使用数据证实了这一理念——内置的 testing 包仍然是 Go 开发者编写单元测试最常选择的选项。然而,对于大型或企业项目,其功能通常不足,这推动了 testifygomock 等框架和库自 2020 年以来的增长。

Testify 扩展了标准 testing 包,使测试更简洁、更易读。它适用于大多数项目,目前有 27% 的开发者使用。

gomock 专为模拟接口和外部服务而设计,约 21% 的 Go 开发者使用。

其他几个 Go 测试框架使用范围较窄,但在特定情况下很有价值。Ginkgo 通常与 Gomega 搭配使用,以实现富有表现力的匹配器,在行为驱动测试方面表现出色。由于它们需要更复杂的设置,这些工具通常用于大型或复杂的测试套件。自 2020 年以来,Ginkgo 的使用率一直稳定在 5% 左右。

Godog 是另一个 BDD 框架,允许以人类可读的 Gherkin 语法编写测试,并与 Go 代码关联。Godog 最适合让开发者与 QA 和产品团队围绕共同的理解保持一致,而不是用于低级单元测试。虽然不新,但 Godog 自 2022 年以来由 Cucumber GitHub 组织 积极维护,采用率有所增长,2025 年约有 4% 的 Go 开发者使用它。

流行的开源库

以下是 2025 年最广泛使用的 Go 开源库,按应用领域分组。

后端服务

  • 日志:
    • log/slog(Go 1.21 及更高版本标准库提供的结构化日志)是新项目开始时依赖最少、最自然的选择。
    • logrus 是一个结构化日志库,推荐用于必须支持 Go 1.21 之前版本的项目。虽然目前处于维护模式,但它仍然稳定且广泛使用。
    • zap 以及在较小程度上,zerolog 常用于高性能日志记录。
  • 数据库:
    • database/sql(标准库)提供了围绕 SQL(或类 SQL)数据库的通用接口。
    • sqlx 在 database/sql 的基础上增加了体验优化。它与驱动程序无关,特别适用于多种数据库。
    • pgx 与 Postgres 紧密绑定,常用于一流的 PostgreSQL 支持和性能。
    • GORMent 等 ORM(对象关系映射)库有助于将 Go 结构体映射到数据库表,让你能够以更面向对象或声明式的方式操作数据库。它们推荐用于重度抽象(迁移、模式建模等)。
  • 配置:
  • 验证:

CLI 应用程序

  • cobra 是最广泛用于构建带有命令、标志和自动帮助的 Go CLI 应用程序的库。它非常适合具有多个子命令的复杂 CLI——开发者工具、自动化脚本和管理工具——并被许多主要的 Go 工具使用,例如 kubectlhelm
  • urfave/cli 易于学习,适用于单命令或小型 CLI 工具,因为它会生成清晰的帮助和使用输出。它最常用于轻量级 CLI 或替代 DevOps/实用脚本。
  • bubbletea 是一个现代 TUI(文本用户界面)框架,用于构建交互式或可视化 CLI 应用程序,例如菜单、仪表板、进度条等。

Kubernetes

  • k8s.io/client-go 是 Kubernetes API 的官方 Go 客户端库,提供 clientsets、动态客户端、发现、informers、listers、REST 和身份验证功能。
  • sigs.k8s.io/controller-runtime 封装了 client-go,提供管理器、协调器、缓存和 webhook 功能。
  • The Operator Framework 是一个用于在 Go 中构建 Kubernetes 操作符的高级脚手架框架。它底层使用 controller-runtime,并帮助生成代码、样板文件和 CRD(自定义资源定义)脚手架。
  • sigs.k8s.io/kubebuilder 是一个使用 CRD 构建 Kubernetes API 和操作符的框架。

IDE 和开发环境

IDE 和编辑器

[LOADING...]

数据显示,JetBrains 开发的 GoLand IDE 仍然是 Go 开发的首选工具,47% 的受访者将其认定为首选 IDE 或编辑器。大约 6% 的 Go 开发者选择带有 Go 插件的 IntelliJ IDEA,主要是因为它支持多种语言。

VS Code 的使用率近期保持稳定,而整体编辑器使用率略有上升。Neovim 作为 Vim 的现代、开源和可扩展的继任者,获得了关注。在 Atom 于 2022 年停止维护之后,其核心贡献者推出了 Zed,一个用 Rust 编写的开源高性能编辑器。用于 Go 开发的其他编辑器的比例基本保持不变且微不足道。

最显著的变化与大型语言模型 (LLM) 的迅速崛起以及对 AI 编码助手的日益增长的需求有关。2025 年,6% 的 Go 开发者将 Cursor——一个基于 VS Code 的 AI 驱动代码编辑器,于 2023 年推出——认定为他们的主要开发环境。

AI 编码辅助

AI 驱动的编码工具对 Go 开发者的工作流程产生了显著影响。调查数据显示,平均而言,Go 开发者比使用其他语言的同行更早开始采用 AI,并且在日常任务中更广泛地使用它。目前,超过 70% 的 Go 开发者表示定期使用至少一种 AI 助手、代理或代码编辑器。

如此高的采用率很大程度上可以用语言本身的特性来解释。即使是基本的 AI 驱动的代码补全和测试生成,在处理 Go 中的样板代码时也能提供显著价值。该语言的简洁性、结构性和可预测性使其特别适合基于 LLM 的代码生成。

以下是 2025 年 Go 开发中常用的最流行的 AI 编码助手、代理和代码编辑器。 [LOADING...]

注:这是一个多选问题。结果仅限于将 Go 列为主要编程语言的受访者。表格中仅列出了超过 3% 的受访者报告定期使用的工具。AI 代理市场正在迅速发展;此处提供的数据收集于 2025 年 4 月至 6 月期间。

Linting 和静态分析

Go 的工具生态系统以其出色的静态分析和 linting 支持而闻名。除了 Go 工具链中包含的工具外,一些广泛采用的解决方案常用于专业项目中。

Golangci-lint 已成为 CI/CD 流水线和本地开发中标准的一体化 linter 运行器。它并行运行 linters,利用缓存提高速度,并且高度可配置。

默认包含一百多个 linter,其中包括 gosec、govet、revive、errcheck、ineffasign 和 staticcheck(部分规则)等流行选项,许多团队更喜欢通过 golanci-lint 运行这些工具。

Golangci-lint 还与所有主流 IDE 集成,实现了“左移方法”。例如,GoLand 原生支持 golangci-lint,在编码时实时运行 golangci-lint 检查,帮助及早发现问题。

另一个值得注意的工具是 nilaway,旨在检测 Go 代码中潜在的 nil 恐慌。它适用于终端或 CI/CD 流水线中的离线使用。为了在开发过程中更早地检测,GoLand 提供了用于检测空指针解引用的过程间分析。空指针解引用检测器基于数据流分析,并针对增量和惰性执行进行了优化,在编辑器中实时响应代码更改。

Go 生态系统的结论与未来展望

正如我们 4 月份的帖子Golang 仍在增长吗?中强调的,2025 年的 Go 生态系统保持健康、稳定和成熟。该语言仍然是后端、基础设施和云原生系统的主要选择。Go 对生产力、安全性、和简洁性的重视确保了其持续的相关性,并为其未来几年的进一步增长奠定了良好基础。

方法论和数据

此处呈现的发现基于2025 年开发者生态系统报告方法论详情和原始数据可在此处获取。所有表格均经过筛选,仅包含将 Go 视为其主要编程语言的受访者。