Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Formatering av koden er en viktig måte å forbedre lesbarheten, konsistensen og gjenbrukbarheten på. Riktig formatert kode er lettere å forstå, endre og vedlikeholde.

En av Gos flotte funksjoner er dens veldefinerte formateringskonvensjoner. Du kan bruke den innebygde formatpakken og go fmt-kommandoen til å formatere koden automatisk. Dette vil bidra til å sikre at andre Go-programmerere kan lese den så enkelt som mulig.

Formatpakken og fmt-kommandoen

De format pakken implementerer standard formatering for Gå til kildekoden. Pakken samvirker med gå format kommandolinjeverktøy for fleksibilitet i formatering av Go-kode.

Formatpakken er en undermodul i go-pakken. Slik kan du importere den:

import"gå/format"

Du kan bla gjennom dokumentasjonen for go fmt-kommandoen ved å spesifisere hjelp kommando før fmt kommando:

gå hjelp fmt

Angi et filnavn etter fmt-kommandoen for å formatere den filen. Dette vil justere kodens mellomrom og innrykk for å samsvare med Go-standarder.

instagram viewer

gå fmt main.go

Bak kulissene er go fmt et alias for gofmt-kommandoen, nærmere bestemt:

gofmt -l -w

Disse flaggene får gofmt til å skrive eventuelle endringer til hver fil du oppgir og liste opp navnene på filene den endrer.

Du kan legge til -x flagg til fmt-kommandoen. -x-flagget hjelper til med å skrive endringer fra formateringen til den opprinnelige filen.

gå fmt -x main.go

De -n flagget fungerer på samme måte som -x, men det gjør ingen endringer. I stedet viser den kommandoene som go fmt ville kjørt uten -n:

gå fmt -n main.go

Flagget forteller formatteren å vise endringer, noe som lar deg gjennomgå dem først før du bruker dem.

Her er et enkelt Go-program som går gjennom heltall fra null til fem og skriver ut strengen "Hello World!".

// formatere en fil med navnet main.go som vist i eksempelet ovenfor 

pakke hoved-
import"fmt"
funchoved-() {
var x int=5
til jeg:=0;Jeg fmt. Println("Hei Verden!")
}
}

Formaterer Go kildekode

Formatpakken inneholder en Kilde funksjon for formatering av Go-filer fra programmer. Du må lese filen og sende innholdet som argumenter til kildefunksjonen.

Kildefunksjonen vil returnere det formaterte filinnholdet du kan skrive til filen eller en ny.

Du kan lese filer med ReadFile funksjonen til ioutil pakke. ReadFile-funksjonen tar inn filnavnet og returnerer filinnholdet og en feil for håndtering.

fileContent, feil := ioutil. ReadFile("main.go")

hvis feil!= null {
Logg. Fatalln("Det oppsto en feil ved lesing av filen", feil)
}

Ved å sende filinnholdet til kildefunksjonen returneres det formaterte filinnholdet og en feil for håndtering.

formatert, feil := format. Kilde (filinnhold)

hvis feil!= null {
Logg. Fatalln("Det oppsto en formateringsfeil med kildefunksjonen", feil)
}

Du kan skrive det formaterte filinnholdet til filen med Skriv fil funksjonen til ioutil pakke. WriteFile-funksjonen tar inn filnavnet, innholdet og filtillatelsesmodus, returnerer eventuelle feil(er). Tillatelsesmodusen er bare relevant hvis filen ikke eksisterer, i så fall vil WriteFile opprette den.

De 0644 filtillatelsesmodus gir:

  • Fileieren lese- og skrivetillatelser.
  • Leserettigheter til andre brukere i samme gruppe som eieren.
  • Ingen tillatelser til andre brukere.
feil = ioutil. Skriv fil("main.go", formatert, 0644)

hvis feil!= null {
Logg. Fatalln("Det oppsto en feil under skriving av filen", feil)
}

Alternativt kan du sende Go-kildekoden til kildefunksjonen for formatering. Du kan spesifisere koden i en byte skive ved å bruke haker (`):

pakke hoved-

import (
"fmt"
"gå/format"
)

funchoved-() {
// enkelt program som beregner arealet av en trekant med regnestykket
// funksjon
formatert, feil := format. Kilde([]byte(`
pakke hoved-
import(
"fmt"
"matte"
)
funchoved-(){
var en flyte64=3
var b flyte64=4
var c flyte64=5
var s flyte64=(a+b+c)/2
var område flyte64=matte. Sqrt (s*(s-a)*(s-b)*(s-c))
fmt. Println("Arealet til trekanten er:",område)
}
`))

hvis feil!= null {
Logg. Fatalln("Det oppsto en formateringsfeil med kildefunksjonen", feil)
} ellers {
fmt. Println(streng(formatert))
}
}

Ved formatering må du konvertere byte-stykket til streng med streng funksjon. Her er den formaterte kildekoden.

Tilpasse formateringsprosessen

Du kan tilpasse formateringsprosessen med formatpakkens Konfig struktur. Konfigurasjonsstrukturen inneholder felt der du kan spesifisere formatalternativer ved instansiering.

import"gå/format"

config := &format. Config{
// Tabwidth angir antall mellomrom per tabulator.
Fanebredde: 8,

// UseTabs angir om formatteren skal bruke tabs i stedet for
// mellomrom.
Bruk faner: falsk,

// TabIndent brukes til å bestemme om den første innrykk skal være
// ferdig med tabulatorer eller mellomrom.
TabInnrykk: ekte,

// NoFinalTab spesifiserer om en siste fane skal fjernes fra
// linjer før de formateres.
NoFinalTab: ekte,

// Mellomrom angir om mellomrom skal brukes for justering.
Mellomrom: ekte,

// NoTrimTrailingSpace spesifiserer om etterfølgende mellomrom skal
// trimmes fra linjer før de formateres.
NoTrimTrailingSpace: falsk,
}

Du kan bruke feltene til å tilpasse oppførselen til formatereren ved å angi alternativene basert på dine behov.

Du kan deretter bruke denne strukturens kildemetode for å formatere et bytestykke basert på konfigurasjonen din.

funchoved-() {
fileContent, feil := ioutil. ReadFile("main.go")

// merk at dette er en kildemetode av typen "config", ikke fra
// `format`-pakken selv om funksjonaliteten er den samme, vil du
// må følge dette hvis du trenger å konfigurere formatereren
formatert, feil := konfig. Kilde (filinnhold)

hvis feil!= null {
Logg. Fatalln("Det var en formateringsfeil med konfigurasjonstypen", feil)
}

ioutil. Skriv fil("main.go", formatert, 0644)
}

Ringer opp konfigurasjonen. Kilde()-funksjonen som denne formaterer innholdet i main.go fil ved hjelp av konfigurasjonsalternativene. Den returnerer det formaterte innholdet som et bytestykke og en feil.

Du kan formatere og manipulere streng i Go

Formatpakken og go fmt-kommandoen kan hjelpe deg med å automatisere kodeformateringsprosessen.

Go gir også en fmt-pakke for strengformatering og en strengpakke for strengmanipulering.

fmt-pakken implementerer enklere formatert I/O med funksjoner som er analoge med Cs printf- og scanf-funksjoner. Stringsfunksjonen implementerer enkle funksjoner for å manipulere UTF-8-kodede strenger.