Форматирование в Go
Как известно, в программировании вопросы форматирования иногда вызывают ожесточенные споры, хотя, по сути, эти вопросы не являются самыми значимыми. Да и в целом, люди способны адаптироваться к разным стилям форматирования, однако все же лучше, если делать это им не нужно. Еще лучше, если разработчики тратят на это как можно меньше времени, а все придерживаются одинакового стиля. Но как обстоит дело с форматированием в Go?
В языке программирования Golang вопросами форматирования занимается программа gofmt (также она доступна как go fmt и работает она на уровне пакета, а не на уровне исходного файла). С ее помощью происходит считывание написанной Go-программы и выдача исходного кода в стандартном стиле отступов и с вертикальным выравниванием, причем комментарии сохраняются, а в случае надобности -- переформатируются. И если вы не знаете, как работать с какой-нибудь незнакомой шаблонной имплементацией кода, просто запустите gofmt. При этом никто не мешает переставить блоки в коде на свое усмотрение и даже сообщить об ошибке gofmt, если вы в этом уверены.
Благодаря gofmt, нет никакой необходимости тратить время на выравнивание, к примеру, комментариев по отношению к полям структуры -- это за вас сделает gofmt. Допустим, у вас есть следующий код:
Программа gofmt отформатирует код и ровно выстроит столбцы:
Теперь рассмотрим некоторые детали форматирования:
- Отступ. Для выполнения отступов используют табы, а gofmt осуществляет их вывод по дефолту. Что касается пробелов, то лучше их применять только тогда, когда это действительно нужно.
- Длина строки. У языка Go нет ограничений по длине строки, поэтому не стоит беспокоиться о переполнении. Вам кажется, что строка является слишком длинной? Просто оберните ее и выполните отступ с дополнительным табом.
- Скобки. Golang требует меньше скобок, чем такие языки, как Java или C, так как, например, те же управляющие структуры (if, for, switch) в своем синтаксисе не содержат скобок. Вдобавок к этому, иерархия приоритетов операторов считается более короткой и понятной -- код ниже будет означать именно то, что подразумевается пробелами, в отличие от других языков программирования:
По материалам https://golang-blog.blogspot.com/.