Formatiranje koda važan je način poboljšanja njegove čitljivosti, dosljednosti i mogućnosti ponovne upotrebe. Ispravno formatiran kod lakše je razumjeti, mijenjati i održavati.
Jedna od izvrsnih značajki Goa su njegove dobro definirane konvencije oblikovanja. Možete koristiti ugrađeni paket formatiranja i naredbu go fmt za automatsko formatiranje koda. To će pomoći da ga drugi Go programeri mogu pročitati što je lakše moguće.
Paket formatiranja i naredba fmt
The format paket implementira standardno oblikovanje za Idi na izvorni kod. Paket je u interakciji s go format alat naredbenog retka za fleksibilnost u oblikovanju Go koda.
Paket formata je podmodul u paketu go. Evo kako ga možete uvesti:
uvoz"go/format"
Možete pregledavati dokumentaciju naredbe go fmt tako da navedete Pomozite naredba prije fmt naredba:
idi pomozi fmt
Navedite naziv datoteke nakon naredbe fmt za formatiranje te datoteke. Ovo će prilagoditi razmake i uvlake vašeg koda kako bi bili u skladu sa Go standardima.
go fmt main.go
Iza scene, go fmt je alias za gofmt naredbu, konkretno:
gofmt -l -w
Te zastavice uzrokuju da gofmt zapisuje sve promjene u svaku datoteku koju dostavite i navodi imena datoteka koje mijenja.
Možete dodati -x zastavica za fmt naredbu. Oznaka -x pomaže pri pisanju promjena iz formatera u izvornu datoteku.
idi fmt -x glavni.idi
The -n zastavica radi slično kao -x, ali ne čini promjene. Umjesto toga, prikazuje naredbe koje bi se go fmt izvodile bez -n:
ići fmt -n glavni.ići
Oznaka govori formateru da prikaže promjene, što vam omogućuje da ih pregledate prije nego što ih primijenite.
Evo jednostavnog Go programa koji prolazi kroz cijele brojeve od nula do pet i ispisuje niz "Hello World!".
// formatiranje datoteke pod nazivom main.go kao što je prikazano u gornjem primjeru
paket glavni
uvoz"fmt"
funkglavni() {
var x int=5
za ja:=0;i fmt. Println("Pozdrav svijete!")
}
}
Formatiranje Go izvornog koda
Paket formata sadrži a Izvor funkcija za formatiranje Go datoteka iz programa. Morat ćete pročitati datoteku i proslijediti sadržaj kao argumente funkciji Izvor.
Funkcija Izvor će vratiti formatirani sadržaj datoteke koji možete napisati u datoteku ili novu.
Možete čitati datoteke s ReadFile funkcija ioutil paket. Funkcija ReadFile preuzima naziv datoteke i vraća sadržaj datoteke i pogrešku za rukovanje.
fileContent, err := ioutil. ReadFile("main.go")
ako pogriješiti != nula {
log. Fatalln("Došlo je do pogreške prilikom čitanja datoteke", pogreška)
}
Prosljeđivanje sadržaja datoteke funkciji Izvor vraća formatirani sadržaj datoteke i pogrešku za rukovanje.
formatiran, pogreška := format. Izvor (fileContent)
ako pogriješiti != nula {
log. Fatalln("Došlo je do pogreške u formatiranju s izvornom funkcijom", pogreška)
}
Formatirani sadržaj datoteke možete zapisati u datoteku pomoću WriteFile funkcija ioutil paket. Funkcija WriteFile preuzima naziv datoteke, sadržaj i način dopuštenja datoteke, vraćajući sve pogreške. Način dopuštenja relevantan je samo ako datoteka ne postoji, u kojem slučaju će je WriteFile stvoriti.
The 0644 način dopuštenja datoteke daje:
- Vlasnik datoteke dopuštenja za čitanje i pisanje.
- Dopuštenja za čitanje drugim korisnicima u istoj grupi kao i vlasnik.
- Nema dopuštenja za druge korisnike.
pogriješiti = ioutil. WriteFile("main.go", formatirano, 0644)
ako pogriješiti != nula {
log. Fatalln("Došlo je do pogreške prilikom pisanja datoteke", pogreška)
}
Alternativno, možete proslijediti Go izvorni kod funkciji Source za formatiranje. Možete navesti kod u odsječku bajta pomoću kvačica (`):
paket glavni
uvoz (
"fmt"
"go/format"
)funkglavni() {
// jednostavan program koji izračunava površinu trokuta pomoću matematike
// funkcija
formatiran, pogreška := format. Izvor([]bajt(`
paket glavni
uvoz(
"fmt"
"matematika"
)
funkglavni(){
var a plovak64=3
var b plovak64=4
var c plovak64=5
var s plovak64=(a+b+c)/2
var područje plovak64= matematika. Sqrt (s*(s-a)*(s-b)*(s-c))
fmt. Println("Površina trokuta je: ",područje)
}
`))
ako pogriješiti != nula {
log. Fatalln("Došlo je do pogreške u formatiranju s izvornom funkcijom", pogreška)
} drugo {
fmt. Println(niz(formatirano))
}
}
Prilikom formatiranja morat ćete pretvoriti isječak bajta u niz pomoću niz funkcija. Evo formatiranog izvornog koda.
Prilagodba procesa oblikovanja
Možete prilagoditi postupak oblikovanja pomoću paketa formata Konfiguracija strukturirati Struktura Config sadrži polja u kojima možete odrediti opcije formata pri instanciranju.
uvoz"go/format"
config := &format. Konfiguracija{
// Širina kartice postavlja broj razmaka po kartici.
Širina kartice: 8,// UseTabs označava treba li formater koristiti tabove umjesto njih
// razmaci.
Koristite kartice: lažno,// TabIndent se koristi za određivanje treba li početno uvlačenje biti
// učinjeno korištenjem tabulatora ili razmaka.
Uvlaka kartice: pravi,// NoFinalTab navodi treba li se ukloniti konačna kartica
// linije prije nego što su formatirane.
NoFinalTab: pravi,// Razmaci određuju treba li se koristiti razmaci za poravnanje.
Razmaci: pravi,
// NoTrimTrailingSpace određuje treba li prazna razmaka
// biti izrezan iz redaka prije nego što se formatiraju.
NoTrimTrailingSpace: lažno,
}
Možete koristiti polja za prilagodbu ponašanja vašeg formatera postavljanjem opcija na temelju vaših zahtjeva.
Zatim možete koristiti izvornu metodu ove strukture za formatiranje odsječka bajta na temelju vaše konfiguracije.
funkglavni() {
fileContent, err := ioutil. ReadFile("main.go")// imajte na umu da je ovo izvorna metoda tipa `config`, a ne iz
// sam paket `format` iako je funkcionalnost ista, hoćete
// morate se toga pridržavati ako trebate konfigurirati formater
formatirano, pogreška := konfig. Izvor (fileContent)ako pogriješiti != nula {
log. Fatalln("Došlo je do pogreške u formatiranju s vrstom konfiguracije", pogreška)
}
ioutil. WriteFile("main.go", formatirano, 0644)
}
Pozivanje konfiguracije. Funkcija Source() poput ove formatira sadržaj glavni.krenuti datoteku pomoću konfiguracijskih opcija. Vraća formatirani sadržaj kao isječak bajta i pogrešku.
Možete formatirati i manipulirati nizom u Go-u
Format paket i naredba go fmt mogu vam pomoći da automatizirate proces oblikovanja koda.
Go također nudi paket fmt za formatiranje nizova i paket nizova za manipulaciju nizovima.
Paket fmt implementira jednostavniji formatirani I/O s funkcijama analognim C-ovim funkcijama printf i scanf. Funkcija nizova implementira jednostavne funkcije za manipuliranje UTF-8 kodiranim nizovima.