Formatarea codului este o modalitate importantă de a-i îmbunătăți lizibilitatea, consistența și reutilizarea. Codul formatat corect este mai ușor de înțeles, modificat și întreținut.
Una dintre caracteristicile grozave ale Go este convențiile sale de formatare bine definite. Puteți utiliza pachetul de format încorporat și comanda go fmt pentru a vă forma automat codul. Acest lucru vă va ajuta să vă asigurați că alți programatori Go îl pot citi cât mai ușor posibil.
Pachetul Format și comanda fmt
The format pachetul implementează formatarea standard pentru Accesați codul sursă. Pachetul interoperează cu formatul go instrument de linie de comandă pentru flexibilitate în formatarea codului Go.
Pachetul de format este un submodul din pachetul go. Iată cum îl puteți importa:
import"go/format"
Puteți răsfoi documentația comenzii go fmt specificând codul Ajutor comanda înainte de fmt comanda:
du-te ajutor fmt
Specificați un nume de fișier după comanda fmt pentru a formata acel fișier. Acest lucru va ajusta spațiul alb și indentarea codului pentru a se conforma standardelor Go.
du-te fmt main.go
În culise, go fmt este un alias pentru comanda gofmt, în special:
gofmt -l -w
Aceste steaguri fac ca gofmt să scrie orice modificări la fiecare fișier pe care îl furnizați și să enumere numele fișierelor pe care le modifică.
Puteți adăuga -X flag la comanda fmt. Indicatorul -x ajută la scrierea modificărilor de la formatator în fișierul original.
du-te fmt -x main.go
The -n flag funcționează similar cu -x, dar nu face modificări. În schimb, afișează comenzile care ar rula fmt fără -n:
du-te fmt -n main.go
Steagul îi spune formatatorului să arate modificările, ceea ce vă permite să le revizuiți mai întâi înainte de a le aplica.
Iată un program Go simplu care parcurge numere întregi de la zero la cinci și imprimă șirul „Hello World!”.
// formatarea unui fișier numit main.go, așa cum se arată în exemplul de mai sus
pachet principal
import"fmt"
funcprincipal() {
var X int=5
pentru eu:=0;i fmt. Println("Salut Lume!")
}
}
Formatarea codului sursă Go
Pachetul de format conține a Sursă funcția de formatare a fișierelor Go din programe. Va trebui să citiți fișierul și să transmiteți conținutul ca argumente funcției Sursă.
Funcția Sursă va returna conținutul fișierului formatat pe care îl puteți scrie în fișier sau unul nou.
Puteți citi fișiere cu Citiți fișierul funcția de ioutil pachet. Funcția ReadFile preia numele fișierului și returnează conținutul fișierului și o eroare de manipulare.
fileContent, err := ioutil. ReadFile(„main.go”)
dacă greș!= zero {
Buturuga. Fatalln(„A apărut o eroare la citirea fișierului”, greseala)
}
Trecerea conținutului fișierului la funcția Sursă returnează conținutul fișierului formatat și o eroare de manipulare.
formatat, err := format. Sursă (fișierConținut)
dacă greș!= zero {
Buturuga. Fatalln(„A apărut o eroare de formatare cu funcția sursă”, greseala)
}
Puteți scrie conținutul fișierului formatat în fișier cu ajutorul WriteFile funcția de ioutil pachet. Funcția WriteFile preia numele fișierului, conținutul și modul de permisiune pentru fișiere, returnând orice eroare(e). Modul de permisiune este relevant doar dacă fișierul nu există, caz în care WriteFile îl va crea.
The 0644 Modul de permisiune pentru fișiere oferă:
- Proprietarul fișierului permisiuni de citire și scriere.
- Permisiuni de citire pentru alți utilizatori din același grup cu proprietarul.
- Fără permisiuni pentru alți utilizatori.
err = ioutil. WriteFile(„main.go”, formatat, 0644)
dacă greș!= zero {
Buturuga. Fatalln(„A apărut o eroare la scrierea fișierului”, greseala)
}
Alternativ, puteți trece codul sursă Go la funcția Sursă pentru formatare. Puteți specifica codul într-o porțiune de octeți folosind bifă (`):
pachet principal
import (
"fmt"
"go/format"
)funcprincipal() {
// program simplu care calculează aria unui triunghi cu ajutorul matematicii
// funcția
formatat, err := format. Sursă([]octet(`
pachet principal
import(
"fmt"
"matematica"
)
funcprincipal(){
var A float64=3
var b float64=4
var c float64=5
var s float64=(a+b+c)/2
var zonă float64=matematică. Sqrt (s*(s-a)*(s-b)*(s-c))
fmt. Println(„Aria triunghiului este:”,zonă)
}
`))
dacă greș!= zero {
Buturuga. Fatalln(„A apărut o eroare de formatare cu funcția sursă”, greseala)
} altfel {
fmt. Println(şir(formatat))
}
}
La formatare, va trebui să convertiți porțiunea de octeți în șir cu şir funcţie. Iată codul sursă formatat.
Personalizarea procesului de formatare
Puteți personaliza procesul de formatare cu pachetul de formatare Config struct. Structura Config conține câmpuri în care puteți specifica opțiunile de format la instanțiere.
import"go/format"
config := &format. Configurare{
// Tabwidth setează numărul de spații pe filă.
Lățimea filei: 8,// UseTabs indică dacă formatatorul ar trebui să folosească file în loc de
// spații.
UseTabs: fals,// TabIndent este folosit pentru a determina dacă indentarea inițială ar trebui să fie
// terminat folosind tab-uri sau spații.
TabIndent: Adevărat,// NoFinalTab specifică dacă o filă finală trebuie eliminată din
// linii înainte de a fi formatate.
NoFinalTab: Adevărat,// Spații specifică dacă spațiile ar trebui folosite pentru aliniere.
Spatii: Adevărat,
// NoTrimTrailingSpace specifică dacă spațiul alb final ar trebui
// să fie tăiate din linii înainte de a fi formatate.
NoTrimTrailingSpace: fals,
}
Puteți utiliza câmpurile pentru a personaliza comportamentul formatatorului, setând opțiunile în funcție de cerințele dvs.
Apoi puteți utiliza metoda Sursă a acestei structuri pentru a formata o porțiune de octeți în funcție de configurația dvs.
funcprincipal() {
fileContent, err := ioutil. ReadFile(„main.go”)// rețineți că aceasta este o metodă Sursă de tip `config`, nu de la
// `format` pachetul în sine, deși funcționalitatea este aceeași, veți
// trebuie să respectați acest lucru dacă trebuie să configurați formatatorul
formatat, err := config. Sursă (fișierConținut)dacă greș!= zero {
Buturuga. Fatalln(„A apărut o eroare de formatare cu tipul de configurare”, greseala)
}
ioutil. WriteFile(„main.go”, formatat, 0644)
}
Apelarea config. Funcția Source() astfel formatează conținutul fișierului principal.go fișier folosind opțiunile de configurare. Returnează conținutul formatat ca o porție de octeți și o eroare.
Puteți forma și manipula șirul în Go
Comanda format package și go fmt vă pot ajuta să vă automatizați procesul de formatare a codului.
Go oferă, de asemenea, un pachet fmt pentru formatarea șirurilor și un pachet de șiruri pentru manipularea șirurilor.
Pachetul fmt implementează I/O formatat mai simplu cu funcții analoge cu funcțiile printf și scanf ale lui C. Funcția șiruri implementează funcții simple pentru a manipula șirurile codificate UTF-8.