Что делает инструмент
Форматтер Go переписывает исходный код Go в единый канонический стиль, которым пользуется всё сообщество Go. Вставьте файл или фрагмент — и получите его с отступами, пробелами, группировкой импортов и выравниванием полей структур и комментариев, как у gofmt.
Работает настоящий gofmt из тулчейна Go, скомпилированный в WebAssembly. Ничего не аппроксимируется: вы видите ровно то, что записал бы go fmt, поэтому отформатированный код можно коммитить, не вызывая диффов в CI.
Как пользоваться
- Вставьте код на Go или откройте файл
.go. - Отформатированный код появляется справа по мере ввода.
- Оставьте отступ Табуляция для кода, который будете коммитить. Выберите 2 пробела или 4 пробела, если код пойдёт в документ, на слайд или на сайт, где табуляция отображается слишком широкой.
- Скопируйте или скачайте результат.
Если код не разбирается, инструмент покажет первую ошибку со строкой и столбцом, например expected ')', found '{', и можно сразу перейти к этой строке.
Пример
В примере — короткая программа, втиснутая в минимум строк: импорты через точку с запятой, структура в двух строках и функции без пробелов вокруг операторов. После форматирования:
- импорты превращаются в блок в скобках, по одному пакету в строке;
- поля структуры стоят на отдельных строках, а их типы выровнены в столбец;
if u.Age<18{превращается вif u.Age < 18 {, а тело переносится на отдельную строку;- в составных литералах появляются пробелы после запятых и двоеточий.
Что gofmt меняет, а что нет
gofmt меняет только оформление. Он никогда не переименовывает идентификаторы, не меняет порядок объявлений и не удаляет неиспользуемые импорты — это задачи инструментов вроде goimports и go vet. Он также сохраняет ваши переносы строк там, где они значимы, поэтому длинный список аргументов, разбитый на несколько строк, так и останется разбитым.
Комментарии сохраняются и получают отступы вместе с окружающим кодом. Комментарии в конце соседних строк выравниваются в столбец — так же, как поля структур.
Советы
- Форматирование — быстрый способ найти пропущенную фигурную скобку: позиция ошибки обычно указывает на первую строку после промаха.
- Прогоняйте форматтер, прежде чем делиться кодом в issue или на ревью. Тогда ревьюеры смогут сосредоточиться на том, что делает код, а не на том, как он выглядит.
- В редакторе включите «форматирование при сохранении» с gopls, чтобы ваши файлы всегда совпадали с этим результатом.
Частые вопросы
› Это настоящий gofmt?
Да. Форматтер — это код gofmt из тулчейна Go, скомпилированный в WebAssembly, поэтому результат байт в байт совпадает с тем, что выводит `gofmt` или `go fmt` на вашей машине.
› Нужна ли директива package?
Нет. Лучше всего вставлять файл целиком, но gofmt принимает и список объявлений или несколько инструкций — это удобно для фрагментов, скопированных из статьи или чата.
› Почему для отступов используется табуляция?
gofmt всегда делает отступы табуляцией, а выравнивание — пробелами. Таково соглашение в Go, а редакторы показывают табуляцию любой нужной вам ширины. Если для документа или слайда нужны пробелы, выберите 2 или 4 пробела — заменятся только ведущие табуляции.
› Загружается ли мой код на сервер?
Нет. Модуль WebAssembly скачивается один раз, а форматирование выполняется локально в браузере.