JetBrains Go现代编码规范指南

GitHub Trending (daily) 工具

摘要

JetBrains发布了一个GitHub仓库,其中包含编写现代Go代码的代码代理指南,涵盖了Go 1.27的所有功能,并与Junie和Claude Code等工具集成。

帮助AI代码代理编写现代Go代码
查看原文
查看缓存全文

缓存时间: 2026/08/27 15:13

JetBrains/go-modern-guidelines

来源:https://github.com/JetBrains/go-modern-guidelines

官方JetBrains项目 (https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)

现代Go开发指南

本仓库包含面向代码代理的规范指南 (https://github.com/JetBrains/go-modern-guidelines/blob/main/plugin/skills/use-modern-go/SKILL.md),帮助它们编写现代风格的Go代码。

例如,遵循这些指南的代理会使用 max(a, b) 而非if-else语句,用 slices.Contains 替代手动循环,用 cmp.Or(a, b, c) 代替连续的nil检查。同时它还能掌握Go 1.26新特性,比如用 new(42) 获取值的指针,以及通过 errors.AsType[T](err) 进行类型安全的错误匹配。

指南涵盖从Go 1.0到Go 1.7版本中最实用的特性,包括 modernize 分析器覆盖的所有功能。代理将会:

  • go.mod 检测项目Go版本
  • 使用该版本及之前可用的语言特性和标准库功能
  • 优先采用现代语法模式替代旧式写法

设计动机

所有编码代理倾向于生成过时的Go代码,主要原因有两点:

  1. 训练数据滞后。 模型无法获知其训练截止日期后新增的特性。若从未接触过 errors.AsType[T](Go 1.26特性),自然无法使用。

  2. 频率偏差。 即使对于模型已知的特性,也常倾向选择旧模式。训练数据中 for i := 0; i < n; i++ 的出现频率远高于 for i := range n,导致输出偏向旧写法。

这些指南通过提供明确参考标准解决了这两个问题。

这与Go团队的发展方向一致。modernize 分析器旨在自动将现有代码更新为新式语法(参见Go团队的技术演讲)。本指南服务于相同目标:让代理从一开始就编写现代Go代码,减少后续维护成本。

系统要求

应用市场集成通过小型CLI工具运行,首次使用时将通过 go install 安装。因此必须安装Go工具链 (https://go.dev/dl/) 并确保其在 PATH 环境变量中。

CLI工具将安装到本地缓存目录(例如 ~/.cache/go-modern-guidelines),不会修改您的项目。目标版本为 Go 1.25或更高版本;在旧版Go中只要启用自动工具链切换(GOTOOLCHAIN=auto,默认设置),仍可正常运行——首次执行时Go会自动获取兼容的工具链。

使用说明

本指南支持Junie、Claude Code、Codex和Cursor,其他代理可通过skills.sh接入。

Junie (https://junie.jetbrains.com)

Junie CLI

在Junie CLI会话中执行以下命令:

  1. 添加本仓库作为应用市场:
/extensions marketplace add JetBrains/go-modern-guidelines
  1. 安装扩展:
/extensions install modern-go-guidelines

当涉及Go任务时,Junie会自动调用该技能。

更新扩展

在Junie CLI会话中更新已安装扩展:

/extensions update modern-go-guidelines

Claude Code (https://claude.com/product/claude-code)

安装

在Claude Code会话中执行以下命令:

  1. 添加本仓库作为应用市场:
/plugin marketplace add JetBrains/go-modern-guidelines
  1. 安装插件:
/plugin install modern-go-guidelines@goland-claude-marketplace

使用方法

Claude Code会在涉及Go任务时自动调用该技能。

手动调用方式:

/modern-go-guidelines:use-modern-go

更新插件

Claude Code支持在启动时自动更新应用市场和插件。第三方应用市场的自动更新默认关闭,请按以下步骤启用:

  1. 运行 /plugin
  2. 打开 Marketplaces 选择 goland-claude-marketplace
  3. 启用 Enable auto-update

当Claude Code提示插件已更新时,使用以下命令应用新版本:

/reload-plugins

手动更新请在终端执行:

claude plugin marketplace update goland-claude-marketplace
claude plugin update modern-go-guidelines@goland-claude-marketplace

Codex (https://developers.openai.com/codex/)

安装

在终端执行以下命令:

  1. 添加本仓库作为应用市场:
codex plugin marketplace add JetBrains/go-modern-guidelines
  1. 安装插件:
codex plugin add modern-go-guidelines@goland-codex-marketplace

更新插件

刷新应用市场并重新安装插件,使Codex替换缓存副本:

codex plugin marketplace upgrade goland-codex-marketplace
codex plugin remove modern-go-guidelines@goland-codex-marketplace
codex plugin add modern-go-guidelines@goland-codex-marketplace

Cursor (https://cursor.com)

为方便使用,本指南以Cursor插件形式分发。

安装

  1. 在终端执行以下命令添加应用市场:
cursor-agent plugin marketplace add https://github.com/JetBrains/go-modern-guidelines
  1. 在Cursor会话中使用 /plugins 命令安装插件。

更新插件

从Git刷新应用市场并重启Cursor以获取新版本插件:

cursor-agent plugin marketplace update goland-cursor-marketplace

若已安装插件仍为旧版本,请使用 /plugins 命令重新安装。Cursor目前未提供非交互式更新命令。

其他代理(通过skills.sh (https://skills.sh))

相同技能包适用于OpenCode等其他代理。安装方法:

npx skills add JetBrains/go-modern-guidelines

(添加 --skill use-modern-go 仅安装本技能)

更新技能

更新项目级安装的技能:

npx skills update use-modern-go -p -y

全局安装请将 -p 替换为 -g

本地开发

要在本地代理中测试CLI修改,请将检出版本构建到工具缓存:

make dev-install

然后在代理运行环境中设置 GO_MODERN_GUIDELINES_DEV=1。启用后,所有使用该插件的代理都将运行本地构建版本而非发布版,此机制在Claude Code、Codex和Cursor中保持一致。需在启动代理前导出变量:

export GO_MODERN_GUIDELINES_DEV=1

编辑CLI后重新执行 make dev-install;下次调用即生效。恢复发布版请取消环境变量(或执行 make dev-uninstall 清理构建文件):

make dev-uninstall

需要Go工具链支持。开发版构建存储在工具缓存目录($XDG_CACHE_HOME/go-modern-guidelines~/.cache/go-modern-guidelines)。

构建流程由 scripts/dev-install.sh 驱动,该脚本与代理接口分离确保代理无法触发构建。无 make 环境(如Windows)可直接运行:

sh scripts/dev-install.sh install       # 或:uninstall
pwsh scripts/dev-install.ps1 install    # PowerShell版本

相似文章

Go 1.27 发行说明

Lobsters Hottest

Go 1.27 发布引入了泛型方法以及其他语言和工具链更新,同时保持与之前版本的兼容性。

Go 1.27 交互式导览

Lobsters Hottest

Go 1.27 新功能的实践性交互式导览,重点介绍泛型方法、结构体字面量字段选择器等,并提供基于官方发布说明的可运行示例。

Go 1.27 发布 - Go 编程语言

Lobsters Hottest

Go 1.27 已发布,包含重大增强,如泛型方法、性能改进以及新标准库特性,例如 encoding/json/v2 和后量子密码学支持。

Go 是 AI 辅助软件工程的理想语言

Hacker News Top

本文认为,Go 的设计理念——强调团队协作、简洁性、兼容性和强大的工具链——使其成为 AI 辅助软件工程时代的理想语言,在这个时代,审查和维护 AI 生成的代码比从头编写代码更为重要。