Перейти к основному содержанию

Форматировщик Go

API reference

Форматирование и приведение в порядок исходного кода Go — отступы табуляцией по глубине вложенности скобок, обязательное размещение открывающей фигурной скобки на той же строке, однозначные пробелы у операторов и запятых, пробелы у двоеточий в составных литералах и необязательная сортировка импортов стандартной библиотеки и сторонних пакетов; сырые строки в `backtick` и комментарии остаются нетронутыми побайтово.

Ввод

Drop a file or browse
One file · text
Или

Параметры форматирования

Вывод

Отформатированный код Go
 
Это было полезно?

Другие способы использовать этот инструмент

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.

Мой код приватен?

Полностью. Всё форматирование выполняется локально в вашем браузере — ваш исходный код никогда не отправляется на сервер, не записывается в журнал и не сохраняется.

gogolanggofmtcode formatterbeautifyindenttabsimports

Нравятся инструменты? Уберите рекламу.

Один платёж навсегда убирает всю рекламу с вашего аккаунта. Без подписки, без слежки.