Koodi vormindamine on oluline viis selle loetavuse, järjepidevuse ja korduvkasutatavuse parandamiseks. Õigesti vormindatud koodi on lihtsam mõista, muuta ja hooldada.
Üks Go suurepärastest funktsioonidest on selle hästi määratletud vormindustavad. Koodi automaatseks vormindamiseks saate kasutada sisseehitatud vormingupaketti ja käsku go fmt. See aitab tagada, et teised Go programmeerijad saaksid seda võimalikult lihtsalt lugeda.
Vorminduspakett ja käsk fmt
The vormingus pakett rakendab jaoks standardvormingu Minge lähtekoodi. Pakett toimib koos vormindage käsureatööriist Go-koodi vormindamise paindlikumaks muutmiseks.
Vormingupakett on paketi alammoodul. Selle importimiseks tehke järgmist.
importida"go/format"
Saate sirvida käsu go fmt dokumentatsiooni, määrates abi käsk enne fmt käsk:
mine appi fmt
Faili vormindamiseks määrake pärast käsku fmt failinimi. See kohandab teie koodi tühikuid ja taanet Go standarditele vastavaks.
mine fmt main.go
Kulisside taga on gofmt käsu gofmt varjunimi, täpsemalt:
gofmt -l -w
Need lipud panevad gofmt'i kirjutama muudatused igasse sisestatud faili ja loetlema muudetavate failide nimed.
Saate lisada -x liputage käsule fm. Lipp -x aitab kirjutada muudatused vormindajalt algsesse faili.
go fmt -x main.go
The -n lipp töötab sarnaselt -x-ga, kuid see ei muuda. Selle asemel kuvab see käsud, mida fmt käivitaks ilma -n:
go fmt -n main.go
Lipp käsib vormindajal muudatusi kuvada, mis võimaldab teil need enne rakendamist üle vaadata.
Siin on lihtne Go programm, mis liigub läbi täisarvu nullist viieni ja prindib stringi "Tere maailm!".
// faili nimega main.go vormindamine, nagu on näidatud ülaltoodud näites
pakett peamine
importida"fmt"
funcpeamine() {
var x int=5
jaoks mina:=0;i fmt. Println("Tere, Maailm!")
}
}
Go lähtekoodi vormindamine
Formaatpakett sisaldab a Allikas funktsioon Go-failide vormindamiseks programmidest. Peate faili lugema ja selle sisu argumentidena edastama funktsioonile Source.
Funktsioon Allikas tagastab vormindatud faili sisu, mille saate faili kirjutada, või uude.
Faile saate lugeda rakendusega Loe faili funktsioon ioutil pakett. Funktsioon ReadFile võtab faili nime sisse ja tagastab faili sisu ja käsitlemise veateate.
fileContent, err := ioutil. ReadFile("main.go")
kui eks!= null {
logi. Fatalln("Faili lugemisel tekkis viga", eksitus)
}
Faili sisu edastamine funktsioonile Source tagastab vormindatud faili sisu ja vea käsitsemisel.
vormindatud, err := vorming. Allikas (faili sisu)
kui eks!= null {
logi. Fatalln("Lähtefunktsiooniga tekkis vormindusviga", eksitus)
}
Vormindatud faili sisu saate faili kirjutada nupuga Kirjuta faili funktsioon ioutil pakett. Funktsioon WriteFile sisestab faili nime, sisu ja faili loa režiim, tagastades mis tahes vea(d). Loarežiim on asjakohane ainult siis, kui faili pole olemas, sel juhul loob selle WriteFile.
The 0644 faililoa režiim annab:
- Failiomanik lugemis- ja kirjutamisõigused.
- Lugege teiste omanikuga samas grupis olevate kasutajate lugemisõigusi.
- Teistele kasutajatele õigusi pole.
err = ioutil. WriteFile("main.go", vormindatud, 0644)
kui eks!= null {
logi. Fatalln("Faili kirjutamisel tekkis viga", eksitus)
}
Teise võimalusena saate vormindamiseks edastada Go lähtekoodi funktsioonile Source. Koodi saab määrata baidilõikena, kasutades linnuke (`):
pakett peamine
importida (
"fmt"
"go/format"
)funcpeamine() {
// lihtne programm, mis arvutab matemaatikaga kolmnurga pindala
// funktsioon
vormindatud, err := vorming. Allikas ([]bait(`
pakett peamine
importida(
"fmt"
"matemaatika"
)
funcpeamine(){
var a ujuk64=3
var b ujuk64=4
var c ujuk64=5
var s ujuk64=(a+b+c)/2
var ala ujuk64= matemaatika. Sqrt (s*(s-a)*(s-b)*(s-c))
fmt. Println("Kolmnurga pindala on:",piirkond)
}
`))
kui eks!= null {
logi. Fatalln("Lähtefunktsiooniga tekkis vormindusviga", eksitus)
} muidu {
fmt. Println(string(vormindatud))
}
}
Vormindamisel peate teisendama baidilõigu stringiks, kasutades string funktsiooni. Siin on vormindatud lähtekood.
Vormindamisprotsessi kohandamine
Vormindamisprotsessi saate kohandada vorminduspaketiga Konfig struktuur. Konfiguratsioonistruktuur sisaldab välju, kus saate määrata vormingusuvandid käivitamisel.
importida"go/format"
config := &vorming. Config{
// Tabwidth määrab tühikute arvu vahekaardi kohta.
Tabelilaius: 8,// UseTabs näitab, kas vormindaja peaks kasutama vahekaarte
// tühikud.
Kasuta Tabs: vale,// TabIndent kasutatakse määramaks, kas esialgne taane peaks olema
// tehakse tabeldusmärkide või tühikute abil.
TabIndent: tõsi,// NoFinalTab määrab, kas viimane vahekaart tuleks eemaldada
// read enne nende vormindamist.
NoFinalTab: tõsi,// Tühikud määrab, kas joondamiseks tuleks kasutada tühikuid.
Ruumid: tõsi,
// NoTrimTrailingSpace määrab, kas lõpu tühik peaks olema
// tuleb ridadelt enne vormindamist kärpida.
NoTrimTrailingSpace: vale,
}
Väljade abil saate kohandada vormindaja käitumist, määrates valikud vastavalt oma vajadustele.
Seejärel saate oma konfiguratsiooni põhjal baidilõigu vormindamiseks kasutada selle struktuuri allika meetodit.
funcpeamine() {
fileContent, err := ioutil. ReadFile("main.go")// pange tähele, et see on 'config' tüüpi Source-meetod, mitte allikast
// `vormingus` pakett ise, kuigi funktsionaalsus on sama, saate seda teha
// Peate sellest kinni pidama, kui teil on vaja vormindajat konfigureerida
vormindatud, err := config. Allikas (faili sisu)kui eks!= null {
logi. Fatalln("Seadistuse tüübiga tekkis vormindusviga", eksitus)
}
ioutil. WriteFile("main.go", vormindatud, 0644)
}
Helistamine konfiguratsioonile. Funktsioon Source() vormindab faili sisu main.go konfiguratsioonisuvandeid kasutades. See tagastab vormindatud sisu baidilõikena ja veana.
Go-s saate stringi vormindada ja sellega manipuleerida
Vorminduspakett ja käsk go fmt aitavad teil koodi vormindamise protsessi automatiseerida.
Go pakub ka fmt-paketti stringide vormindamiseks ja stringipaketti stringidega manipuleerimiseks.
Fmt pakett realiseerib lihtsama vorminguga I/O funktsioonidega, mis on analoogsed C printf ja scanf funktsioonidega. Stringide funktsioon rakendab lihtsaid funktsioone UTF-8 kodeeritud stringidega manipuleerimiseks.