четверг, 18 июля 2019 г.

Команда gofmt в Golang

gofmt форматирует программы Go. Используются табы для отступа и пробелы для выравнивания. Выравнивание предполагает, что редактор использует шрифт фиксированной ширины.

Без явного пути обрабатывает стандартный ввод. При указании файла работает с этим файлом; при указании каталога рекурсивно работает со всеми файлами .go в этом каталоге. (Файлы, начинающиеся с точки, игнорируются.) По умолчанию gofmt печатает переформатированные источники на стандартный вывод.

Использование:

gofmt [flags] [path ...]

Флаги:

-d
    Не печатать отформатированные источники 
    на стандартный вывод.
    Если форматирование файла отличается от gofmt, 
    вывести diff на стандартный вывод.
-e
    Распечатать все (включая ложные) ошибки.
-l
    Не печатать отформатированные источники 
    на стандартный вывод.
    Если форматирование файла отличается от формата gofmt, 
    вывести его имя на стандартный вывод.
-r rule
    Применить правило (rule) перезаписи 
    к источнику перед переформатированием.
-s
    Попробовать упростить код 
    (после применения правила перезаписи, если оно есть).
-w
    Не печатать отформатированные источники 
    на стандартный вывод.
    Если форматирование файла отличается от формата gofmt, 
    перезаписать его версией gofmt. 
    Если во время перезаписи произошла ошибка,
    исходный файл восстанавливается 
    из автоматического резервного копирования.

Поддержка отладки:

-cpuprofile filename
    Записать профиль процессора в указанный файл.

Правило перезаписи, указанное с флагом -r, должно быть строкой вида:

pattern -> replacement

Шаблон (pattern) и замена (replacement) должны быть валидными выражениями Go. В шаблоне односимвольные строчные идентификаторы служат подстановочными знаками, соответствующими произвольным подвыражениям; эти выражения будут заменены теми же идентификаторами при замене.

Когда gofmt читает из стандартного ввода, он принимает либо полную программу Go, либо фрагмент программы. Фрагмент программы должен быть синтаксически допустимым списком объявлений, списком утверждений или выражением. При форматировании такого фрагмента gofmt сохраняет начальные отступы, а также начальные и конечные пробелы, так что отдельные разделы программы Go могут быть отформатированы путем передачи их через gofmt.

Примеры использования gofmt

Чтобы проверить файлы на наличие ненужных скобок:

gofmt -r '(a) -> a' -l *.go

Чтобы удалить скобки:

gofmt -r '(a) -> a' -w *.go

Чтобы преобразовать дерево пакетов из явных верхних границ среза в неявные:

gofmt -r 'α[β:len(α)] -> α[β:]' -w $GOROOT/src

Команда simplify (упростить)

При вызове с -s gofmt по возможности сделает следующие исходные преобразования.

Составной литерал массива, среза или карты в форме:
    []T{T{}, T{}}
будет упрощено до:
    []T{{}, {}}

Выражение среза формы:
    s[a:len(s)]
будет упрощено до:
    s[a:]

Диапазон (range) формы:
    for x, _ = range v {...}
будет упрощено до:
    for x = range v {...}

Диапазон (range) формы:
    for _ = range v {...}
будет упрощено до:
    for range v {...}

Это может привести к изменениям, которые несовместимы с более ранними версиями Go.


Читайте также:


Комментариев нет:

Отправить комментарий