Formátovanie kódu je dôležitý spôsob, ako zlepšiť jeho čitateľnosť, konzistenciu a opätovnú použiteľnosť. Správne naformátovaný kód je jednoduchšie na pochopenie, úpravu a údržbu.
Jednou zo skvelých funkcií Go sú jeho dobre definované konvencie formátovania. Na automatické formátovanie kódu môžete použiť vstavaný formátovací balík a príkaz go fmt. Pomôže to zabezpečiť, aby ho ostatní programátori Go mohli prečítať čo najjednoduchšie.
Balík Formát a príkaz fmt
The formát balík implementuje štandardné formátovanie pre Prejsť na zdrojový kód. Balík spolupracuje s go format nástroj príkazového riadka pre flexibilitu pri formátovaní kódu Go.
Formátový balík je submodul v balíku go. Môžete ho importovať takto:
importovať"prejsť/formátovať"
Dokumentáciu príkazu go fmt môžete prechádzať zadaním Pomoc príkaz pred fmt príkaz:
choď pomôcť fmt
Za príkazom fmt zadajte názov súboru na formátovanie tohto súboru. Tým sa upravia biele znaky a odsadenie kódu tak, aby zodpovedali štandardom Go.
go fmt main.go
V zákulisí je go fmt alias pre príkaz gofmt, konkrétne:
gofmt -l -w
Tieto príznaky spôsobia, že gofmt zapíše akékoľvek zmeny do každého súboru, ktorý zadáte, a uvedie názvy súborov, ktoré zmení.
Môžete pridať -X príznak príkazu fmt. Príznak -x pomáha zapisovať zmeny z formátovača do pôvodného súboru.
go fmt -x main.go
The -n flag funguje podobne ako -x, ale nevykonáva zmeny. Namiesto toho zobrazuje príkazy, ktoré by sa fmt spustili bez -n:
go fmt -n main.go
Príznak informuje formátovač, aby ukázal zmeny, čo vám umožňuje skontrolovať ich predtým, ako ich použijete.
Tu je jednoduchý program Go, ktorý prechádza celými číslami od nuly do päť a vypíše reťazec „Hello World!“.
// formátovanie súboru s názvom main.go, ako je uvedené v príklade vyššie
balík Hlavná
importovať"fmt"
funcHlavná() {
var X int=5
pre i:=0;i fmt. Println("Ahoj Svet!")
}
}
Formátovanie zdrojového kódu Go
Balenie formátu obsahuje a Zdroj funkcia na formátovanie súborov Go z programov. Budete musieť prečítať súbor a odovzdať obsah ako argumenty funkcii Zdroj.
Funkcia Zdroj vráti obsah naformátovaného súboru, ktorý môžete zapísať do súboru, alebo nový.
Môžete čítať súbory pomocou ReadFile funkciu ioutil balík. Funkcia ReadFile prevezme názov súboru a vráti obsah súboru a chybu spracovania.
fileContent, chyba := ioutil. ReadFile("main.go")
ak chyba!= nula {
log. Fatalln("Pri čítaní súboru sa vyskytla chyba", chyba)
}
Odovzdanie obsahu súboru funkcii Zdroj vráti obsah naformátovaného súboru a chybu spracovania.
naformátované, chyba := formát. Zdroj (fileContent)
ak chyba!= nula {
log. Fatalln("Vyskytla sa chyba formátovania s funkciou zdroja", chyba)
}
Obsah naformátovaného súboru môžete zapísať do súboru pomocou WriteFile funkciu ioutil balík. Funkcia WriteFile preberá názov súboru, obsah a režim povolenia súboru, ktorá vráti akúkoľvek chybu (chyby). Režim povolení je relevantný iba vtedy, ak súbor neexistuje, v takom prípade ho WriteFile vytvorí.
The 0644 režim povolenia súboru dáva:
- Povolenia vlastníka súboru na čítanie a zápis.
- Povolenia na čítanie pre iných používateľov v rovnakej skupine ako vlastník.
- Žiadne povolenia pre ostatných používateľov.
chybovať = ioutil. WriteFile("main.go", formátovaný, 0644)
ak chyba!= nula {
log. Fatalln("Pri zapisovaní súboru sa vyskytla chyba", chyba)
}
Alternatívne môžete zdrojový kód Go odovzdať funkcii Zdroj na formátovanie. Kód môžete zadať v bajtovom výseku pomocou značiek (`):
balík Hlavná
importovať (
"fmt"
"prejsť/formátovať"
)funcHlavná() {
// jednoduchý program, ktorý vypočíta obsah trojuholníka pomocou matematických metód
// funkcia
naformátované, chyba := formát. Zdroj ([]byte(`
balík Hlavná
importovať(
"fmt"
"matematika"
)
funcHlavná(){
var a plavák64=3
var b plavák64=4
var c plavák64=5
var s plavák64=(a+b+c)/2
var oblasť plavák64= matematika. Sqrt (s*(s-a)*(s-b)*(s-c))
fmt. Println("Oblasť trojuholníka je: ",oblasť)
}
`))
ak chyba!= nula {
log. Fatalln("Vyskytla sa chyba formátovania s funkciou zdroja", chyba)
} inak {
fmt. Println(reťazec(formátovaný))
}
}
Pri formátovaní budete musieť previesť bajtový rez na reťazec s reťazec funkciu. Tu je naformátovaný zdrojový kód.
Prispôsobenie procesu formátovania
Proces formátovania si môžete prispôsobiť pomocou balíka formátov Konfig štrukturovať. Štruktúra Config obsahuje polia, v ktorých môžete zadať možnosti formátu pri vytváraní inštancie.
importovať"prejsť/formátovať"
config := &formát. Config{
// Šírka tabulátora nastavuje počet medzier na tabulátor.
Šírka tabulátora: 8,// UseTabs označuje, či má formátovač používať namiesto tabulátorov tabulátory
// medzery.
UseTabs: falošný,// TabIndent sa používa na určenie, či má byť počiatočné odsadenie
// vykonáva sa pomocou tabulátorov alebo medzier.
TabIndent: pravda,// NoFinalTab určuje, či sa má odstrániť posledná karta
// riadkov pred ich formátovaním.
NoFinalTab: pravda,// Medzery určuje, či sa majú na zarovnanie použiť medzery.
Priestory: pravda,
// NoTrimTrailingSpace určuje, či sa má na konci medzera
// bude orezaný z riadkov pred ich formátovaním.
NoTrimTrailingSpace: falošný,
}
Polia môžete použiť na prispôsobenie správania vášho formátovača nastavením možností na základe vašich požiadaviek.
Potom môžete použiť metódu Source tejto štruktúry na formátovanie bajtového rezu na základe vašej konfigurácie.
funcHlavná() {
fileContent, chyba := ioutil. ReadFile("main.go")// všimnite si, že toto je zdrojová metóda typu `config`, nie z
// `format` samotný balík, hoci funkčnosť je rovnaká, budete
// toto musíte dodržiavať, ak potrebujete nakonfigurovať formátovač
naformátované, chyba := config. Zdroj (fileContent)ak chyba!= nula {
log. Fatalln("Vyskytla sa chyba formátovania s typom konfigurácie", chyba)
}
ioutil. WriteFile("main.go", formátovaný, 0644)
}
Volanie konfigurácie. Funkcia Source() ako táto formátuje obsah súboru main.go pomocou konfiguračných možností. Vráti naformátovaný obsah ako bajtový rez a chybu.
Môžete formátovať a manipulovať s reťazcom v Go
Príkaz format package a go fmt vám môže pomôcť automatizovať proces formátovania kódu.
Go tiež poskytuje balík fmt na formátovanie reťazcov a balík reťazcov na manipuláciu s reťazcami.
Balík fmt implementuje jednoduchšie formátované I/O s funkciami podobnými funkciám printf a scanf v C. Funkcia strings implementuje jednoduché funkcie na manipuláciu s reťazcami zakódovanými v UTF-8.