Форматирование кода — важный способ повысить его удобочитаемость, согласованность и возможность повторного использования. Правильно отформатированный код легче понять, модифицировать и поддерживать.
Одной из замечательных особенностей Go являются четко определенные правила форматирования. Вы можете использовать встроенный пакет форматирования и команду go fmt для автоматического форматирования кода. Это поможет гарантировать, что другие программисты Go смогут прочитать его как можно проще.
Пакет форматирования и команда fmt
формат пакет реализует стандартное форматирование для Исходный код. Пакет взаимодействует с перейти формат Инструмент командной строки для гибкости форматирования кода Go.
Пакет format является подмодулем в пакете go. Вот как вы можете импортировать его:
Импортировать"перейти/форматировать"
Вы можете просмотреть документацию по команде go fmt, указав помощь команду перед ФМТ команда:
иди помоги
Укажите имя файла после команды 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.