Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Форматирование кода — важный способ повысить его удобочитаемость, согласованность и возможность повторного использования. Правильно отформатированный код легче понять, модифицировать и поддерживать.

Одной из замечательных особенностей Go являются четко определенные правила форматирования. Вы можете использовать встроенный пакет форматирования и команду go fmt для автоматического форматирования кода. Это поможет гарантировать, что другие программисты Go смогут прочитать его как можно проще.

Пакет форматирования и команда fmt

формат пакет реализует стандартное форматирование для Исходный код. Пакет взаимодействует с перейти формат Инструмент командной строки для гибкости форматирования кода Go.

Пакет format является подмодулем в пакете go. Вот как вы можете импортировать его:

Импортировать"перейти/форматировать"

Вы можете просмотреть документацию по команде go fmt, указав помощь команду перед ФМТ команда:

instagram viewer
иди помоги

Укажите имя файла после команды fmt, чтобы отформатировать этот файл. Это настроит пробелы и отступы вашего кода в соответствии со стандартами Go.

перейти на main.go

За кулисами go fmt — это псевдоним команды gofmt, а именно:

гофмт -л -ш

Эти флаги заставляют gofmt записывать любые изменения в каждый предоставленный вами файл и перечислять имена файлов, которые он изменяет.

Вы можете добавить -Икс флаг команде fmt. Флаг -x помогает записывать изменения из средства форматирования в исходный файл.

перейти fmt -x main.go

флаг работает аналогично -x, но не вносит изменений. Вместо этого он отображает команды, которые go fmt выполнялись бы без -n:

перейти fmt -n main.go

Этот флаг указывает средству форматирования отображать изменения, что позволяет вам сначала просмотреть их, прежде чем применять.

Вот простая программа на Go, которая перебирает целые числа от нуля до пяти и печатает строку «Hello World!».

// форматирование файла с именем main.go, как показано в примере выше 

упаковка основной
Импортировать"ФМТ"
функцияосновной() {
вар Икс инт=5
для я:=0;я ФМТ. Распечатать("Привет, мир!")
}
}

Форматирование исходного кода Go

Пакет формата содержит Источник функция форматирования файлов Go из программ. Вам нужно будет прочитать файл и передать его содержимое в качестве аргументов функции Source.

Функция Source вернет отформатированное содержимое файла, которое вы можете записать в файл, или новое.

Вы можете читать файлы с Читать файл функция ioutil упаковка. Функция ReadFile принимает имя файла и возвращает содержимое файла и ошибку для обработки.

fileContent, ошибка := ioutil. ЧитатьФайл("main.go")

если ошибся != ноль {
бревно. Fatalln("Произошла ошибка при чтении файла", ошибся)
}

Передача содержимого файла функции Source возвращает отформатированное содержимое файла и ошибку для обработки.

отформатировано, ошибка := формат. Источник (содержимое файла)

если ошибся != ноль {
бревно. Fatalln("Произошла ошибка форматирования исходной функции", ошибся)
}

Вы можете записать отформатированное содержимое файла в файл с Записать файл функция ioutil упаковка. Функция WriteFile принимает имя файла, содержимое и режим доступа к файлу, возвращая любую ошибку(и). Режим разрешений имеет значение только в том случае, если файл не существует, и в этом случае WriteFile создаст его.

0644 режим разрешения файла дает:

  • Владелец файла имеет права на чтение и запись.
  • Разрешения на чтение для других пользователей в той же группе, что и владелец.
  • Нет разрешений другим пользователям.
ошибка = ioutil. ЗаписатьФайл("main.go", отформатировано, 0644)

если ошибся != ноль {
бревно. Fatalln("Произошла ошибка при записи файла", ошибся)
}

Кроме того, вы можете передать исходный код Go функции Source для форматирования. Вы можете указать код в байтовом срезе с помощью галочек (`):

упаковка основной

Импортировать (
"ФМТ"
"перейти/форматировать"
)

функцияосновной() {
// простая программа, вычисляющая площадь треугольника с помощью математики
// функция
отформатировано, ошибка := формат. Источник([]байт(`
упаковка основной
Импортировать(
"ФМТ"
"математика"
)
функцияосновной(){
вар а поплавок64=3
вар б поплавок64=4
вар с поплавок64=5
вар с поплавок64=(а+б+в)/2
вар область поплавок64= математика. Sqrt (s*(s-a)*(s-b)*(s-c))
ФМТ. Распечатать(«Площадь треугольника равна:»,область)
}
`))

если ошибся != ноль {
бревно. Fatalln("Произошла ошибка форматирования исходной функции", ошибся)
} еще {
ФМТ. Распечатать(нить(отформатировано))
}
}

При форматировании вам нужно будет преобразовать байтовый фрагмент в строку с нить функция. Вот отформатированный исходный код.

Настройка процесса форматирования

Вы можете настроить процесс форматирования с помощью пакета форматирования. Конфигурация структура. Структура Config содержит поля, в которых вы можете указать параметры формата при создании экземпляра.

Импортировать"перейти/форматировать"

конфиг := &формат. Конфиг{
// Ширина табуляции устанавливает количество пробелов на табуляции.
Ширина табуляции: 8,

// UseTabs указывает, должен ли модуль форматирования использовать вкладки вместо
// пробелы.
Используйте вкладки: ЛОЖЬ,

// TabIndent используется, чтобы определить, должен ли быть начальный отступ
// делается с помощью табуляции или пробелов.
TabIndent: истинный,

// NoFinalTab указывает, следует ли удалить последнюю вкладку из
// строки до их форматирования.
NoFinalTab: истинный,

// Пробелы указывают, следует ли использовать пробелы для выравнивания.
Пространства: истинный,

// NoTrimTrailingSpace указывает, должен ли конечный пробел
// обрезаться из строк перед их форматированием.
Нотримтрейлингспейс: ЛОЖЬ,
}

Вы можете использовать эти поля для настройки поведения средства форматирования, задав параметры в соответствии с вашими требованиями.

Затем вы можете использовать метод Source этой структуры для форматирования байтового среза на основе вашей конфигурации.

функцияосновной() {
fileContent, ошибка := ioutil. ЧитатьФайл("main.go")

// обратите внимание, что это метод Source типа `config`, а не из
// сам пакет `format`, хотя функциональность такая же, вы
// нужно придерживаться этого, если вам нужно настроить форматер
отформатировано, ошибка := config. Источник (содержимое файла)

если ошибся != ноль {
бревно. Fatalln("Произошла ошибка форматирования с типом конфигурации", ошибся)
}

ioutil. ЗаписатьФайл("main.go", отформатировано, 0644)
}

Вызов конфига. Функция Source(), подобная этой, форматирует содержимое main.go файл с помощью параметров конфигурации. Он возвращает отформатированное содержимое в виде фрагмента байта и ошибки.

Вы можете форматировать и манипулировать строкой в ​​Go

Пакет форматирования и команда go fmt могут помочь вам автоматизировать процесс форматирования кода.

Go также предоставляет пакет fmt для форматирования строк и пакет strings для работы со строками.

Пакет fmt реализует более простой форматированный ввод-вывод с функциями, аналогичными функциям C printf и scanf. Функция strings реализует простые функции для управления строками в кодировке UTF-8.