Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Форматирането на вашия код е важен начин за подобряване на неговата четимост, последователност и възможност за повторна употреба. Правилно форматираният код е по-лесен за разбиране, модифициране и поддръжка.

Една от страхотните функции на Go са неговите добре дефинирани конвенции за форматиране. Можете да използвате вградения пакет за форматиране и командата go fmt, за да форматирате автоматично своя код. Това ще помогне да се гарантира, че другите програмисти на Go могат да го четат възможно най-лесно.

Пакетът за форматиране и командата fmt

The формат пакетът изпълнява стандартно форматиране за Отидете на изходния код. Пакетът взаимодейства с go формат инструмент за команден ред за гъвкавост при форматиране на Go код.

Форматният пакет е подмодул в пакета go. Ето как можете да го импортирате:

импортиране"go/format"

Можете да прегледате документацията на командата go fmt, като посочите помогне команда преди fmt команда:

instagram viewer
отидете помогнете fmt

Посочете име на файл след командата fmt, за да форматирате този файл. Това ще коригира празното пространство и отстъпа на вашия код, за да съответства на стандартите на Go.

отидете fmt main.go

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

gofmt -l -w

Тези флагове карат gofmt да записва всички промени във всеки предоставен от вас файл и да изрежда имената на файловете, които променя.

Можете да добавите флаг към командата fmt. Флагът -x помага за запис на промени от форматиращия файл в оригиналния файл.

отидете fmt -x main.go

The флагът работи подобно на -x, но не прави промени. Вместо това той показва командите, които go fmt ще се изпълняват без -n:

отидете fmt -n main.go

Флагът казва на формататора да покаже промените, което ви позволява първо да ги прегледате, преди да ги приложите.

Ето една проста програма Go, която преминава през цели числа от нула до пет и отпечатва низа „Hello World!“.

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

пакет основен
импортиране"fmt"
функосновен() {
вар х вътр=5
за аз:=0;i fmt. Println("Здравей свят!")
}
}

Форматиране на изходния код на Go

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

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

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

fileContent, err := ioutil. ReadFile("main.go")

ако грешка!= нула {
дневник. Fatalln(„Възникна грешка при четенето на файла“, грешка)
}

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

форматиран, грешка := формат. Източник (fileContent)

ако грешка!= нула {
дневник. Fatalln(„Възникна грешка при форматиране с функцията източник“, грешка)
}

Можете да запишете съдържанието на форматирания файл във файла с WriteFile функция на ioutil пакет. Функцията WriteFile приема името на файла, съдържанието и режим на разрешение за файлове, връщайки всяка грешка(и). Режимът на разрешение е приложим само ако файлът не съществува, в който случай WriteFile ще го създаде.

The 0644 режимът на разрешение за файлове дава:

  • Разрешения за четене и запис на собственика на файла.
  • Разрешения за четене на други потребители в същата група като собственика.
  • Няма разрешения за други потребители.
грешка = ioutil. WriteFile("main.go", форматиран, 0644)

ако грешка!= нула {
дневник. Fatalln(„Възникна грешка при записването на файла“, грешка)
}

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

пакет основен

импортиране (
"fmt"
"go/format"
)

функосновен() {
// проста програма, която изчислява площта на триъгълник с математика
// функция
форматиран, грешка := формат. Източник ([]байт(`
пакет основен
импортиране(
"fmt"
"математика"
)
функосновен(){
вар а float64=3
вар b float64=4
вар ° С float64=5
вар с float64=(a+b+c)/2
вар ■ площ float64= математика. Sqrt (s*(s-a)*(s-b)*(s-c))
fmt. Println("Площта на триъгълника е: ",■ площ)
}
`))

ако грешка!= нула {
дневник. Fatalln(„Възникна грешка при форматиране с функцията източник“, грешка)
} друго {
fmt. Println(низ(форматиран))
}
}

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

Персонализиране на процеса на форматиране

Можете да персонализирате процеса на форматиране с пакета за форматиране Конфиг структура Структурата Config съдържа полета, където можете да зададете опции за формат при инстанциране.

импортиране"go/format"

config := &format. Config{
// Tabwidth задава броя интервали на раздел.
Ширина на раздела: 8,

// UseTabs показва дали форматиращият трябва да използва раздели вместо
// интервали.
Използване на раздели: невярно,

// TabIndent се използва за определяне дали първоначалният отстъп трябва да бъде
// направено с помощта на раздели или интервали.
TabIndent: вярно,

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

// Интервалите указват дали да се използват интервали за подравняване.
интервали: вярно,

// NoTrimTrailingSpace указва дали празното пространство в края трябва да бъде
// да бъдат изрязани от редовете, преди да бъдат форматирани.
NoTrimTrailingSpace: невярно,
}

Можете да използвате полетата, за да персонализирате поведението на вашия форматиращ инструмент, като зададете опциите според вашите изисквания.

След това можете да използвате метода Source на тази структура, за да форматирате байтов отрязък въз основа на вашата конфигурация.

функосновен() {
fileContent, err := ioutil. ReadFile("main.go")

// имайте предвид, че това е метод на източник от типа `config`, а не от
// самия пакет `format` въпреки че функционалността е същата, вие ще
// трябва да се придържате към това, ако трябва да конфигурирате формататора
форматиран, err := config. Източник (fileContent)

ако грешка!= нула {
дневник. Fatalln(„Възникна грешка при форматиране с типа на конфигурацията“, грешка)
}

ioutil. WriteFile("main.go", форматиран, 0644)
}

Извикване на конфигурацията. Функцията Source() като тази форматира съдържанието на main.go файл с помощта на опциите за конфигурация. Връща форматираното съдържание като част от байта и грешка.

Можете да форматирате и манипулирате низ в Go

Командата format package и go fmt може да ви помогне да автоматизирате процеса на форматиране на вашия код.

Go също така предоставя fmt пакет за форматиране на низове и пакет низове за манипулиране на низове.

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