Kodo formatavimas yra svarbus būdas pagerinti jo skaitomumą, nuoseklumą ir pakartotinį naudojimą. Tinkamai suformatuotą kodą lengviau suprasti, keisti ir prižiūrėti.
Viena iš puikių „Go“ savybių yra aiškiai apibrėžtos formatavimo taisyklės. Norėdami automatiškai suformatuoti kodą, galite naudoti integruotą formato paketą ir komandą go fmt. Tai padės užtikrinti, kad kiti „Go“ programuotojai galėtų jį kuo lengviau perskaityti.
Formato paketas ir fmt komanda
The formatu paketas įgyvendina standartinį formatavimą Eikite į šaltinio kodą. Paketas sąveikauja su go formatu komandinės eilutės įrankis lankstesniam Go kodo formatavimui.
Formato paketas yra „go“ paketo submodulis. Štai kaip galite jį importuoti:
importuoti"eiti/formatuoti"
Galite naršyti komandos go fmt dokumentaciją nurodydami padėti komandą prieš fmt komanda:
eik pagalbos fmt
Po komandos fmt nurodykite failo pavadinimą, kad formatuotumėte tą failą. Tai pakoreguos kodo tarpą ir įtrauką, kad atitiktų Go standartus.
go fmt main.go
Užkulisiuose go fmt yra gofmt komandos slapyvardis, konkrečiai:
gofmt -l -w
Šios vėliavėlės priverčia gofmt įrašyti bet kokius pakeitimus kiekviename jūsų pateiktame faile ir išvardyti keičiamų failų pavadinimus.
Galite pridėti -x vėliavėlė prie fm komandos. Vėliava -x padeda įrašyti pakeitimus iš formatuotojo į pradinį failą.
go fmt -x main.go
The -n vėliavėlė veikia panašiai kaip -x, tačiau ji nekeičia. Vietoj to, rodomos komandos, kurios „fmt“ būtų vykdomos be -n:
go fmt -n main.go
Vėliava nurodo formatuotojui rodyti pakeitimus, todėl galite juos peržiūrėti prieš taikydami.
Štai paprasta „Go“ programa, kuri perjungia sveikuosius skaičius nuo nulio iki penkių ir išspausdina eilutę „Hello World!“.
// formatuoti failą pavadinimu main.go, kaip parodyta aukščiau esančiame pavyzdyje
paketą pagrindinis
importuoti"fmt"
funcpagrindinis() {
var x tarpt=5
dėl aš:=0;i fmt. Println("Labas pasauli!")
}
}
„Go“ šaltinio kodo formatavimas
Formato pakete yra a Šaltinis funkcija Go failams formatuoti iš programų. Turėsite perskaityti failą ir perduoti turinį kaip argumentus šaltinio funkcijai.
Funkcija Šaltinis grąžins suformatuotą failo turinį, kurį galite įrašyti į failą arba į naują.
Galite skaityti failus naudodami Skaityti failą funkcija ioutil paketą. Funkcija ReadFile įveda failo pavadinimą ir grąžina failo turinį bei tvarkymo klaidą.
fileContent, err := ioutil. Skaityti failą („main.go“)
jeigu klysta! = nulis {
žurnalas. Fatalln („Įvyko klaida skaitant failą“, klaida)
}
Perdavus failo turinį šaltinio funkcijai, grąžinamas suformatuotas failo turinys ir apdorojimo klaida.
suformatuotas, err := formatas. Šaltinis (failo turinys)
jeigu klysta! = nulis {
žurnalas. Fatalln („Įvyko formatavimo klaida naudojant šaltinio funkciją“, klaida)
}
Suformatuoto failo turinį galite įrašyti į failą naudodami Rašyti failą funkcija ioutil paketą. Funkcija WriteFile įveda failo pavadinimą, turinį ir failo leidimo režimas, grąžina bet kokią klaidą (-as). Leidimo režimas svarbus tik tuo atveju, jei failo nėra, tokiu atveju WriteFile jį sukurs.
The 0644 failo leidimo režimas suteikia:
- Failo savininkas skaitymo ir rašymo teises.
- Skaityti leidimus kitiems naudotojams toje pačioje grupėje kaip savininkas.
- Jokių leidimų kitiems vartotojams.
err = ioutil. WriteFile(„main.go“, suformatuotas, 0644)
jeigu klysta! = nulis {
žurnalas. Fatalln („Rašant failą įvyko klaida“, klaida)
}
Arba galite perduoti Go šaltinio kodą šaltinio funkcijai formatuoti. Galite nurodyti kodą baitų skiltyje naudodami varneles (`):
paketą pagrindinis
importuoti (
"fmt"
"eiti/formatuoti"
)funcpagrindinis() {
// paprasta programa, kuri apskaičiuoja trikampio plotą su matematika
// funkcija
suformatuotas, err := formatas. Šaltinis ([]baitas(`
paketą pagrindinis
importuoti(
"fmt"
"matematika"
)
funcpagrindinis(){
var a plūdė64=3
var b plūdė64=4
var c plūdė64=5
var s plūdė64=(a+b+c)/2
var plotas plūdė64= matematika. Sqrt (s*(s-a)*(s-b)*(s-c))
fmt. Println("Trikampio plotas yra:, plotas)
}
`))
jeigu klysta! = nulis {
žurnalas. Fatalln („Įvyko formatavimo klaida naudojant šaltinio funkciją“, klaida)
} Kitas {
fmt. Println(styga(suformatuotas))
}
}
Formatuodami turėsite konvertuoti baitų dalį į eilutę su styga funkcija. Štai suformatuotas šaltinio kodas.
Formatavimo proceso pritaikymas
Formatavimo procesą galite tinkinti naudodami formatavimo paketą konfig struktūra. Konfigūracijos struktūroje yra laukai, kuriuose galite nurodyti formatavimo parinktis.
importuoti"eiti/formatuoti"
config := &formatas. konfigūracija{
// Tabwidth nustato tarpų skaičių skirtuke.
Skirtuko plotis: 8,// UseTabs nurodo, ar formatuotojas turėtų naudoti skirtukus, o ne
// tarpai.
Naudokite skirtukus: klaidinga,// TabIndent naudojama norint nustatyti, ar turėtų būti pradinė įtrauka
// atliekama naudojant tabuliatorius arba tarpus.
TabIndent: tiesa,// NoFinalTab nurodo, ar paskutinis skirtukas turi būti pašalintas
// eilutės prieš jas suformatuojant.
NoFinalTab: tiesa,// Tarpai nurodo, ar tarpai turi būti naudojami lygiuojant.
Erdvės: tiesa,
// NoTrimTrailingSpace nurodo, ar turi būti paliktas tuščias tarpas
// būti apkarpyti iš eilučių prieš jas formatuojant.
NoTrimTrailingSpace: klaidinga,
}
Galite naudoti laukus norėdami tinkinti savo formatuotojo veikimą, nustatydami parinktis pagal savo poreikius.
Tada galite naudoti šios struktūros šaltinio metodą, kad formatuotumėte baitų skiltį pagal konfigūraciją.
funcpagrindinis() {
fileContent, err := ioutil. Skaityti failą („main.go“)// atminkite, kad tai yra „config“ tipo šaltinio metodas, o ne iš
// pats paketas `format`, nors funkcionalumas yra tas pats
// to reikia laikytis, jei reikia sukonfigūruoti formatuotoją
suformatuotas, err := config. Šaltinis (failo turinys)jeigu klysta! = nulis {
žurnalas. Fatalln („Įvyko formatavimo klaida naudojant konfigūracijos tipą“, klaida)
}
ioutil. WriteFile(„main.go“, suformatuotas, 0644)
}
Iškviečiama konfigūracija. Ši funkcija Source () formatuoja turinį pagrindinis.go failą naudodami konfigūracijos parinktis. Jis grąžina suformatuotą turinį kaip baitų skiltį ir klaidą.
Galite formatuoti ir manipuliuoti eilute Go
Formatavimo paketas ir komanda go fmt gali padėti automatizuoti kodo formatavimo procesą.
„Go“ taip pat teikia fmt paketą, skirtą eilučių formatavimui, ir eilučių paketą, skirtą manipuliuoti eilutėmis.
Fmt paketas įgyvendina paprastesnį formatuotą I/O su funkcijomis, analogiškomis C printf ir scanf funkcijoms. Stygų funkcija įgyvendina paprastas funkcijas, skirtas manipuliuoti UTF-8 koduotomis eilutėmis.