TGViewer
Библиотека Go-разработчика | Golang Библиотека Go-разработчика | Golang @goproglib · 24.1K subscribers
Post #7223 4.8K
👨‍💻 Что делать, если go fix сломал поведение

В Go 1.26 go fix переписан с нуля. Теперь это полноценный движок модернизации: заменяет if/else на min/max, переписывает циклы на range-over-int, подставляет strings.Cut вместо strings.Index — и ещё десятки трансформаций за один запуск.

Звучит удобно. Но после go fix ./... код может сломаться или, хуже, молча изменить поведение.

Два типа конфликтов

Синтаксические — go fix ловит сам и просит запустить повторно.

Семантические — опаснее. Две независимые правки вместе могут сделать переменную неиспользуемой — и это уже ошибка компиляции. Лишние импорты инструмент уберёт сам, но с переменными придётся разбираться вручную.

Тихие изменения поведения

appendclipped заменяет append([]T(nil), s...) на slices.Clone(s). Если s пустой — Clone вернёт nil. Для JSON это разница между null и []. Анализатор по умолчанию выключен, но показательно.

slicescontains заменяет цикл на slices.Contains. Если выражение для искомого элемента имело побочные эффекты — поведение изменится. Этот баг попал в трекер и был исправлен в 1.26.3.

Как работать безопасно

Сначала смотрите diff без применения:
go fix -diff ./...


Запускайте из чистого git-состояния, в отдельной ветке.

Если сломалось — изолируйте анализатор:
go fix -slicescontains=false ./...
go fix -minmax ./...


Не забывайте про платформы: один запуск обрабатывает только текущую конфигурацию сборки. Для мультиплатформенных проектов запускайте с разными GOOS/GOARCH.

go fix — мощный инструмент, но не автопилот.

📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max

🐸 Библиотека Go-разработчика

#GoDeep
  • ❤ 6
  • 👍 4
  • 🔥 2
More from @goproglib
  1. Sep 30, 2026🧑‍💻 Эмулятор AWS-сервисов Kumo — это небольшой инструмент на Go для локальной имитации A…
  2. Sep 29, 2026👨‍💻 Библиотека для написания LSP-серверов Написать свой Language Server с нуля на Go сло…
  3. Sep 28, 2026🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — 1 true / 0 false 🔥 — 1 true /…
  4. Sep 28, 2026👩‍💻 Что на самом деле происходит внутри Go map? После Go 1.24 обычный map внутри работае…
  5. Sep 26, 2026🔥 В Go 1.27 появился portable SIMD До этого SIMD-оптимизации в Go требовали архитектурног…
  6. Sep 25, 2026🤡🤡 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoGiggle
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 →