Koodin muotoilu on tärkeä tapa parantaa sen luettavuutta, johdonmukaisuutta ja uudelleenkäytettävyyttä. Oikein muotoiltu koodi on helpompi ymmärtää, muokata ja ylläpitää.
Yksi Go: n hienoista ominaisuuksista on sen hyvin määritellyt muotoilukäytännöt. Voit käyttää sisäänrakennettua muotopakettia ja go fmt -komentoa koodin automaattiseen muotoiluun. Tämä auttaa varmistamaan, että muut Go-ohjelmoijat voivat lukea sen mahdollisimman helposti.
Muotopaketti ja fmt-komento
The muoto paketti toteuttaa standardin muotoilun Siirry lähdekoodiin. Paketti toimii yhdessä mene muotoon komentorivityökalu Go-koodin muotoilun joustavuuteen.
Muotopaketti on alimoduuli go-paketissa. Näin voit tuoda sen:
tuonti"go/format"
Voit selata go fmt -komennon dokumentaatiota määrittämällä auta komento ennen fmt komento:
mene apuun fmt
Määritä tiedoston nimi fmt-komennon jälkeen tiedoston alustamiseksi. Tämä säätää koodisi välilyönnit ja sisennykset Go-standardien mukaisiksi.
go fmt main.go
Kulissien takana go fmt on alias gofmt-komennolle, erityisesti:
gofmt -l -w
Nämä liput saavat gofmt: n kirjoittamaan muutokset jokaiseen toimittamaasi tiedostoon ja luettelemaan muuttamiensa tiedostojen nimet.
Voit lisätä -x lippu fm-komentoon. Lippu -x auttaa kirjoittamaan muutoksia muotoilijasta alkuperäiseen tiedostoon.
go fmt -x main.go
The -n lippu toimii samalla tavalla kuin -x, mutta se ei tee muutoksia. Sen sijaan se näyttää komennot, jotka fmt suorittaisivat ilman -n: tä:
go fmt -n main.go
Lippu käskee muotoilijaa näyttämään muutokset, jolloin voit tarkistaa ne ennen kuin otat ne käyttöön.
Tässä on yksinkertainen Go-ohjelma, joka kiertää kokonaislukuja nollasta viiteen ja tulostaa merkkijonon "Hello World!".
// muotoilemalla main.go-nimisen tiedoston yllä olevan esimerkin mukaisesti
paketti pää
tuonti"fmt"
funcpää() {
var x int=5
varten minä:=0;i fmt. Println("Hei maailma!")
}
}
Go-lähdekoodin muotoilu
Muotopaketti sisältää a Lähde toiminto Go-tiedostojen alustamiseen ohjelmista. Sinun on luettava tiedosto ja välitettävä sen sisältö argumentteina lähdefunktiolle.
Lähde-toiminto palauttaa muotoillun tiedoston sisällön, jonka voit kirjoittaa tiedostoon tai uuteen.
Voit lukea tiedostoja Lue tiedosto toiminto ioutil paketti. ReadFile-toiminto ottaa tiedoston nimen ja palauttaa tiedoston sisällön ja käsittelyvirheen.
fileContent, err := ioutil. ReadFile("main.go")
jos virhe! = nolla {
Hirsi. Fatalln("Tiedoston lukemisessa tapahtui virhe", virhe)
}
Tiedoston sisällön välittäminen lähdefunktiolle palauttaa muotoillun tiedoston sisällön ja käsittelyvirheen.
muotoiltu, err := muoto. Lähde (tiedoston sisältö)
jos virhe! = nolla {
Hirsi. Fatalln("Lähdetoiminnossa tapahtui muotoiluvirhe", virhe)
}
Voit kirjoittaa muotoillun tiedoston sisällön tiedostoon Kirjoita tiedosto toiminto ioutil paketti. WriteFile-toiminto ottaa tiedoston nimen, sisällön ja tiedostojen käyttöoikeustila, palauttaa mahdollisen virheen. Lupatila on merkityksellinen vain, jos tiedostoa ei ole olemassa, jolloin WriteFile luo sen.
The 0644 tiedoston käyttöoikeustila antaa:
- Tiedoston omistaja luku- ja kirjoitusoikeudet.
- Lukuoikeudet muille käyttäjille samassa ryhmässä kuin omistaja.
- Ei oikeuksia muille käyttäjille.
err = ioutil. WriteFile("main.go", muotoiltu, 0644)
jos virhe! = nolla {
Hirsi. Fatalln("Tiedoston kirjoittamisessa tapahtui virhe", virhe)
}
Vaihtoehtoisesti voit välittää Go-lähdekoodin Source-funktiolle muotoilua varten. Voit määrittää koodin tavuviipaleessa rastiilla (`):
paketti pää
tuonti (
"fmt"
"go/format"
)funcpää() {
// yksinkertainen ohjelma, joka laskee kolmion pinta-alan matematiikan avulla
// toiminto
muotoiltu, err := muoto. Lähde([]tavu(`
paketti pää
tuonti(
"fmt"
"matematiikka"
)
funcpää(){
var a kellua64=3
var b kellua64=4
var c kellua64=5
var s kellua64=(a+b+c)/2
var alueella kellua64= matematiikka. Sqrt (s*(s-a)*(s-b)*(s-c))
fmt. Println("Kolmion pinta-ala on:,alue)
}
`))
jos virhe! = nolla {
Hirsi. Fatalln("Lähdetoiminnossa tapahtui muotoiluvirhe", virhe)
} muu {
fmt. Println(merkkijono(muotoiltu))
}
}
Muotoilun yhteydessä sinun on muunnettava tavuosio merkkijonoksi merkkijono toiminto. Tässä on muotoiltu lähdekoodi.
Muotoiluprosessin mukauttaminen
Voit mukauttaa muotoiluprosessia muotoilupaketin avulla Konfig struct. Config-rakenne sisältää kenttiä, joissa voit määrittää muotoasetukset instantiossa.
tuonti"go/format"
config := &muoto. Config{
// Tabwidth määrittää välilyöntien määrän sarkainta kohden.
Välilehden leveys: 8,// UseTabs osoittaa, pitäisikö muotoilijan käyttää välilehtiä sen sijaan
// välilyönnit.
Käytä välilehtiä: väärä,// TabIndentiä käytetään määrittämään, pitäisikö ensimmäinen sisennys olla
// tehdään sarkaimilla tai välilyönneillä.
TabIndent: totta,// NoFinalTab määrittää, poistetaanko viimeinen välilehti
// riviä ennen niiden muotoilua.
NoFinalTab: totta,// Spaces määrittää, käytetäänkö välilyöntejä tasaukseen.
Tilat: totta,
// NoTrimTrailingSpace määrittää, pitäisikö perässä olevan välilyönnin käyttää
// leikataan riveistä ennen niiden muotoilua.
NoTrimTrailingSpace: väärä,
}
Voit käyttää kenttiä muokataksesi muotoilijasi toimintaa asettamalla asetukset tarpeidesi mukaan.
Voit sitten käyttää tämän rakenteen lähdemenetelmää tavuviipaleen muotoilemiseen kokoonpanosi perusteella.
funcpää() {
fileContent, err := ioutil. ReadFile("main.go")// Huomaa, että tämä on "config"-tyyppinen lähdemenetelmä, ei lähteestä
// `format`-paketti, vaikka toiminnallisuus on sama
// sinun on noudatettava tätä, jos sinun on määritettävä muotoilija
alustettu, err := config. Lähde (tiedoston sisältö)jos virhe! = nolla {
Hirsi. Fatalln("Asetusten tyypin kanssa tapahtui muotoiluvirhe", virhe)
}
ioutil. WriteFile("main.go", muotoiltu, 0644)
}
Konfigin soittaminen. Source()-funktio muotoilee sisällön sisällön main.go tiedosto määritysvaihtoehtojen avulla. Se palauttaa muotoillun sisällön tavulohkona ja virheenä.
Voit muotoilla ja manipuloida merkkijonoa Gossa
Muotoilupaketti ja go fmt -komento voivat auttaa sinua automatisoimaan koodin muotoiluprosessin.
Go tarjoaa myös fmt-paketin merkkijonojen muotoiluun ja merkkijonopaketin merkkijonojen käsittelyyn.
Fmt-paketti toteuttaa yksinkertaisemman alustetun I/O: n toiminnoilla, jotka vastaavat C: n printf- ja scanf-toimintoja. Merkkijonofunktio toteuttaa yksinkertaisia toimintoja UTF-8-koodattujen merkkijonojen käsittelemiseksi.