Форматировщик Go
Форматирование и приведение в порядок исходного кода Go — отступы табуляцией по глубине вложенности скобок, обязательное размещение открывающей фигурной скобки на той же строке, однозначные пробелы у операторов и запятых, пробелы у двоеточий в составных литералах и необязательная сортировка импортов стандартной библиотеки и сторонних пакетов; сырые строки в `backtick` и комментарии остаются нетронутыми побайтово.
Ввод
Параметры форматирования
Вывод
Другие способы использовать этот инструмент
REST API
curl -X POST https://api.iotools.cloud/v1/tool/go-formatter \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"goInput": "package main\n\nimport (\n\"fmt\"\n\"os\"\n\"github.com/sp…",
"sortImports": "true"
}'Подставьте свой собственный ключ из аккаунта. Поля инструмента — это тело запроса, без обёртки.
Спросите у ИИ-агента
Use the IOTools `go-formatter` tool (Go Formatter) on this input:
YOUR_INPUT_HEREВставьте это любому агенту, подключённому к MCP-серверу IOTools, и добавьте свой ввод.
Виджет для встраивания
<iframe
src="https://iotools.cloud/embed/go-formatter/"
width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
title="Форматировщик Go — iotools.cloud"
sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
allow="clipboard-write"
style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>Вставьте это на свою страницу — бесплатно, без ключа, нужна лишь обратная ссылка.
| Стоимость вызова API/MCP | От 5 кредитов |
|---|---|
| Нужно больше кредитов? | Посмотреть тарифы |
Также доступно через
Руководства
Вставьте неаккуратный код Go и сразу получите обратно чистый исходный код, соответствующий конвенциям gofmt — прямо в браузере. Форматировщик Go расставляет отступы табуляцией, переносит каждую открывающую фигурную скобку на ту же строку, что и if/for/func/struct, которому она принадлежит, аккуратно выравнивает пробелы вокруг операторов и запятых, а также может сортировать и группировать импорты на стандартную библиотеку и сторонние пакеты — при этом сырые строки `backtick` и комментарии остаются полностью нетронутыми.
Почему табуляция и почему скобка никогда не переносится
Две вещи в форматировании Go — не вопросы стиля, а собственная конвенция языка. Отступы всегда табуляцией, а не пробелами: этот инструмент не предлагает вариант с пробелами, потому что gofmt тоже его не предлагает. И открывающая фигурная скобка остаётся на той же строке, что и ключевое слово, которому она принадлежит: Go автоматически вставляет точку с запятой в конце строки, поэтому { на отдельной строке может незаметно изменить смысл кода, а не только его внешний вид. Этот инструмент всегда возвращает одиночную скобку на предыдущую строку.
Как пользоваться
Вставьте исходный код Go или загрузите файл .go. Включите Сортировать и группировать импорты, если хотите, чтобы блок import был переупорядочен на группу стандартной библиотеки и группу сторонних пакетов, каждая из которых отсортирована по алфавиту. Скопируйте результат или скачайте его как formatted.go. Форматирование выполняется автоматически при вводе или изменении опции.
Что нормализуется
- Отступы — табуляция, по глубине вложенности скобок.
case/defaultсмещаются на один уровень влево относительно телаswitch. - Расположение скобок — строка, состоящая только из
{, всегда присоединяется к предыдущей строке. - Пробелы у операторов — однозначные бинарные операторы получают одиночный пробел с обеих сторон:
:=,==,!=,<=,>=,&&,||,<<,>>,&^,=, а также формы составного присваивания. - Пробелы у запятых и точек с запятой — перед ними пробела нет, после них один пробел.
- Двоеточия в составных литералах —
User{Name:"x"}превращается вUser{Name: "x"}, а двоеточия в срезах и индексах остаются плотными (s[1:3]). Это настоящее разрешение неоднозначности, а не догадка: инструмент отслеживает тип самой внутренней открытой скобки во всём файле и ставит пробел только тогда, когда эта скобка —{, но никогда не[. struct{,interface{и заголовки операторов без скобок (if x > 0{,for i := range xs{) получают пробел перед скобкой, как и сигнатуры функций вродеfunc f() error{.- Сортировка импортов (необязательно) — группы стандартной библиотеки и сторонних пакетов, каждая отсортирована по алфавиту и отделена пустой строкой.
- Пустые строки — сводятся к не более чем одной подряд, не ставятся сразу после
{и непосредственно перед}, а перед функцией, типом, переменной или константой верхнего уровня (func/type/var/const) вставляется ровно одна.
Что намеренно не трогается
- Унарные и бинарные
+,-,*,&, а также оператор канала<-(бинарный при отправке, плотный унарный префикс при получении). Чтобы их различить, нужен настоящий разбор, поэтому их существующие пробелы сохраняются без изменений. - Перенос строк — ничего не переносится на большее или меньшее число строк, чем было дано.
- Всё внутри строк. Сырые строки
`...`сохраняются **байт в байт** — переводы строк, отступы, скобки и двоеточия включительно, поскольку в них часто хранятся SQL и шаблоны. Теги структур (`json:"name"`) тоже не меняются внутри. - Комментарии. Комментарии
//и/* */, включая многострочные блочные комментарии, копируются без изменений.
Это то же самое, что gofmt?
Нет — это текстовый форматировщик без зависимостей, который работает полностью в вашем браузере, а не настоящий парсер Go. gofmt строит полное синтаксическое дерево; этот инструмент работает с токенизированным текстом, что даёт правильные табуляции, правильное расположение скобок и разумные пробелы без установки Go.
Мой код приватен?
Полностью. Всё форматирование выполняется локально в вашем браузере — ваш исходный код никогда не отправляется на сервер, не записывается в журнал и не сохраняется.