TGViewer
Golang Дайджест Golang Дайджест @golang_digest · 13.4K subscribers
Post #343 10.2K
🟦 ❤️ Modern Go Guidelines от GoLand Team — чтобы AI-агенты перестали писать устаревший Go

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

Ребята из JetBrains сделали набор гайдлайнов для AI-агентов (Claude Code и Junie), чтобы те писали современный Go, а не код образца 2018 года.

Проблема реальная и знакомая каждому, кто пользуется ИИ-ассистентами для Go:

- Отсечка данных: модели не знают фичи, добавленные после их обучения. Claude Opus 4.6 обучен по май 2025 — про Go 1.26 он не в курсе.

- Частотный перекос: в тренировочных данных в разы больше for i := 0; i < n; i++, чем for i := range n. Модель выбирает то, что встречала чаще.

В результате агент вместо slices.Contains(roles, role) пишет ручной цикл на 7 строк, вместо new("hello") городит s := "hello"; &s, а про errors.AsType[T] вообще не слышал.

Что делает плагин:

- Определяет версию Go из go.mod
- Инструктирует агента использовать фичи только до этой версии включительно
- Покрывает всё от Go 1.0 до 1.26: cmp.Or, min/max, wg.Go(), b.Loop(), strings.SplitSeq, new(val) и т.д.

Как подключить:

- В Junie (GoLand) — работает из коробки начиная с версии 2xx.620.xx
- В Claude Code — ставится как плагин, активируется командой /use-modern-go

🟢Ребята из GoLand Team протестировали его на 40 примерах и убедились, что без гайдлайнов Claude Code пишет откровенно устаревший код.

————

А что на счёт go fix?

Как мы помним, в Go 1.26 полностью переписали go fix. Теперь это мощный инструмент с 20+ анализаторами-модернизаторами 👍

minmax
, rangeint, slicescontains, stringscut, mapsloop, forvar, newexpr и другие. Одна команда go fix ./... — и ваш код автоматически переписывается на современные идиомы.

Go Team сами признались, что LLM-ассистенты — одна из причин, почему они взялись за modernize-анализаторы. Чтобы в тренировочных данных было больше современного кода, нужно сначала модернизировать существующий.

Так решает ли go fix ту же задачу?

Частично — да. Если ваш агент написал for i := 0; i < n; i++ вместо for range n, go fix это подчистит. Но есть нюанс: go fix работает постфактум с уже написанным кодом, а гайдлайны JetBrains заставляют агента писать правильно с самого начала. Это два дополняющих друг друга подхода: один — «пиши сразу нормально», другой — «подстрахуем на всякий случай».

Мой совет: подключайте гайдлайны + гоняйте go fix после каждого обновления тулчейна. Ну или, как один из комментаторов на HN предложил, добавьте golangci-lint с modernize-линтером в CLAUDE.md — пусть агент сам за собой убирает.

🟠Важно! Проект свежий и полностью открытый, любой вклад приветствуются — можно добавлять поддержку других агентов, новые правила и любые улучшения. Ребята из GoLand Team будут только рады. Мне об этом лично сказали.

#ai #tools
GitHub GitHub - JetBrains/go-modern-guidelines: Help AI coding agents write modern Go Help AI coding agents write modern Go. Contribute to JetBrains/go-modern-guidelines development by creating an account on GitHub.
  • 👍 35
  • 🔥 12
  • ❤ 11
More from @golang_digest
  1. Sep 16, 2026Post #363
  2. Sep 15, 2026Дописал самый большой кусок статьи про Go 1.27 — раздел про постквантовые подписи. В 1.27…
  3. Sep 13, 2026Post #361
  4. Sep 13, 2026Post #360
  5. Aug 27, 2026😐 Ультимативный разбор... Go 1.27? Честно, не знаю зачем я это сделал, но я сделал.. Ну п…
  6. Aug 19, 2026Вышел Go 1.27 https://go.dev/doc/go1.27 Подробный интерактивный разбор ещё готовлю, подкас…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →