A kód formázása fontos módja annak olvashatóságának, konzisztenciájának és újrafelhasználhatóságának javításának. A megfelelően formázott kód könnyebben érthető, módosítható és karbantartható.
A Go egyik nagyszerű tulajdonsága a jól meghatározott formázási konvenció. A kód automatikus formázásához használhatja a beépített formátumcsomagot és a go fmt parancsot. Ez segít abban, hogy más Go programozók a lehető legkönnyebben el tudják olvasni.
A formátumcsomag és az fmt parancs
A formátum csomag szabványos formázást valósít meg a Menj a forráskódhoz. A csomag együttműködik a go format parancssori eszköz a Go kód rugalmas formázásához.
A formátumcsomag egy almodul a go csomagban. Így importálhatja:
import"go/format"
A go fmt parancs dokumentációjában a következő megadásával tallózhat Segítség parancs előtt a fmt parancs:
menj segíts fmt
Adjon meg egy fájlnevet az fmt parancs után a fájl formázásához. Ezzel beállítja a kód szóközét és behúzását, hogy megfeleljen a Go szabványoknak.
go fmt main.go
A színfalak mögött a go fmt a gofmt parancs álneve, konkrétan:
gofmt -l -w
Ezek a jelzők arra késztetik a gofmt-t, hogy minden változtatást minden megadott fájlba írjon, és felsorolja a megváltoztatott fájlok nevét.
Hozzáadhatja a -x jelölje meg az fm parancsot. Az -x jelző segít a változtatások írásában a formázóról az eredeti fájlba.
go fmt -x main.go
A -n A jelző az -x-hez hasonlóan működik, de nem módosít. Ehelyett azokat a parancsokat jeleníti meg, amelyek az fmt -n nélkül futnának:
go fmt -n main.go
A zászló jelzi a formázónak, hogy mutassa meg a változtatásokat, ami lehetővé teszi azok áttekintését, mielőtt alkalmazná őket.
Íme egy egyszerű Go program, amely nullától ötig görgeti az egész számokat, és kiírja a „Hello World!” karakterláncot.
// a main.go nevű fájl formázása a fenti példában látható módon
csomag fő-
import"fmt"
funcfő-() {
var x int=5
számára én:=0;én fmt. Println("Helló Világ!")
}
}
A Go forráskód formázása
A formátumcsomag tartalmazza a Forrás funkció Go fájlok formázásához programokból. El kell olvasnia a fájlt, és át kell adnia annak tartalmát argumentumként a Source függvénynek.
A Forrás funkció visszaadja a formázott fájltartalmat, amelyet a fájlba írhat, vagy egy újat.
A fájlokat a Fájl olvasása funkciója ioutil csomag. A ReadFile funkció beveszi a fájlnevet, és visszaadja a fájl tartalmát és a kezelési hibát.
fileContent, err := ioutil. ReadFile("main.go")
ha hiba! = nulla {
log. Fatalln("Hiba történt a fájl olvasásakor", hiba)
}
A fájltartalomnak a Forrás függvénynek való átadása visszaadja a formázott fájltartalmat és kezelési hibát.
formázott, err := formátum. Forrás (fileContent)
ha hiba! = nulla {
log. Fatalln("Formázási hiba történt a forrásfüggvénnyel", hiba)
}
A formázott fájl tartalmát a fájlba írhatja a WriteFile funkciója ioutil csomag. A WriteFile függvény beveszi a fájl nevét, tartalmát és fájl engedélyezési mód, bármilyen hibát visszaadva. Az engedélyezési mód csak akkor releváns, ha a fájl nem létezik, ebben az esetben a WriteFile létrehozza azt.
A 0644 A fájlengedélyezési mód a következőket adja:
- A fájl tulajdonosa olvasási és írási jogosultságokkal rendelkezik.
- Olvasási engedélyek a tulajdonossal azonos csoportba tartozó többi felhasználó számára.
- Nincs engedély más felhasználók számára.
err = ioutil. WriteFile("main.go", formázott, 0644)
ha hiba! = nulla {
log. Fatalln("Hiba történt a fájl írása közben", hiba)
}
Alternatív megoldásként átadhatja a Go forráskódot a Forrás függvénynek formázás céljából. A kódot egy bájtszeletben adhatja meg pipákkal (`):
csomag fő-
import (
"fmt"
"go/format"
)funcfő-() {
// egyszerű program, amely kiszámolja egy háromszög területét a matematikával
// függvény
formázott, err := formátum. Forrás([]byte(`
csomag fő-
import(
"fmt"
"matematika"
)
funcfő-(){
var a úszó64=3
var b úszó64=4
var c úszó64=5
var s úszó64=(a+b+c)/2
var terület úszó64= matematika. Sqrt (s*(s-a)*(s-b)*(s-c))
fmt. Println("A háromszög területe:,terület)
}
`))
ha hiba! = nulla {
log. Fatalln("Formázási hiba történt a forrásfüggvénnyel", hiba)
} más {
fmt. Println(húr(formázott))
}
}
Formázáskor a bájtszeletet karakterláncsá kell konvertálnia a húr funkció. Itt van a formázott forráskód.
A formázási folyamat testreszabása
A formázási folyamatot testreszabhatja a formátumcsomaggal Konfig struct. A Config struktúra olyan mezőket tartalmaz, amelyekben megadhatja a példányosítási formátumbeállításokat.
import"go/format"
config := &formátum. Config{
// A Tabwidth beállítja a tabulátoronkénti szóközök számát.
Lapszélesség: 8,// A UseTabs azt jelzi, hogy a formázónak tabulátorokat kell-e használnia helyette
// szóközök.
UseTabs: hamis,// A TabIndent annak meghatározására szolgál, hogy kell-e a kezdeti behúzás
// tabulátorral vagy szóközzel történik.
TabIndent: igaz,// A NoFinalTab meghatározza, hogy el kell-e távolítani az utolsó lapot
// sorokat formázásuk előtt.
NoFinalTab: igaz,// A Spaces megadja, hogy kell-e szóközöket használni az igazításhoz.
Spaces: igaz,
// A NoTrimTrailingSpace megadja, hogy a záró szóközt kell-e használni
// le kell vágni a sorokból a formázás előtt.
NoTrimTrailingSpace: hamis,
}
A mezők segítségével testreszabhatja a formázó viselkedését, ha a beállításokat saját igényei szerint állítja be.
Ezután ennek a struktúrának a Source metódusával formázhat egy bájtszeletet a konfigurációja alapján.
funcfő-() {
fileContent, err := ioutil. ReadFile("main.go")// vegye figyelembe, hogy ez egy "config" típusú Source metódus, nem pedig a
// magát a `format` csomagot, bár a funkcionalitás ugyanaz, megteheted
// ehhez ragaszkodnia kell, ha konfigurálnia kell a formázót
formázott, err := config. Forrás (fileContent)ha hiba! = nulla {
log. Fatalln("Formázási hiba történt a konfiguráció típusával", hiba)
}
ioutil. WriteFile("main.go", formázott, 0644)
}
A konfiguráció hívása. Az ehhez hasonló Source() függvény formázza a tartalmát fő.go fájlt a konfigurációs beállítások segítségével. A formázott tartalmat bájtszeletként és hibaként adja vissza.
Formázhatja és manipulálhatja a karakterláncot a Go-ban
A formázási csomag és a go fmt parancs segíthet a kód formázási folyamatának automatizálásában.
A Go egy fmt csomagot is biztosít a karakterlánc formázásához és egy strings csomagot a karakterlánc-kezeléshez.
Az fmt csomag egyszerűbb formázott I/O-t valósít meg a C printf és scanf funkcióihoz hasonló funkciókkal. A strings függvény egyszerű függvényeket valósít meg az UTF-8 kódolású karakterláncok kezeléséhez.