Når du skriver Go-kode, vil du finne strengformatering veldig nyttig i mange situasjoner. Du kan analysere innganger eller lage mer komplekse utdata enn enkel sammenkobling. Du jobber kanskje med andre typer enn vanlige strenger.

Strengformatering i Go bruker den kjente prosessen og syntaksen til printf-funksjonen, som språk fra Java til Haskell også bruker.

Go tilbyr ulike metoder for formatering av strenger i fmt pakke. Du kan bruke funksjoner og verb for strengformatering avhengig av operasjonen eller inngangene du vil formatere.

Stringformatering i Go

Funksjonene i fmt-pakken ligner på motparter, som printf-funksjonen i bash eller C. Go henter formateringsverbene fra C.

Du bruker strengformateringsverb som plassholdere for variabelverdiene dine i en innholdsstreng. Du kan deretter sende den formateringsstrengen til en funksjon som Printf, sammen med verdier som tilsvarer disse plassholderne.

Du kan ikke bruke strengformateringsverb med Skrive ut og Println metoder. Du kan bruke dem med metoder som Printf og Sprintf.

fmt. Println("Dette er en test %v", 90)
fmt. Printf("Dette er en test %v", 90)

De %v verb skriver ut hvilken som helst verdi i standardformatet. De Println Metoden gjenkjenner ikke verb og skriver ut hvilke argumenter den mottar. De Printf og Sprintf funksjoner formaterer begge det første strengargumentet du sender til dem.

Stringformateringsfunksjoner i fmt-pakken

Formaterer strenger inn programmeringsspråket Go krever at du bruker en strengformateringsfunksjon og et verb. Funksjonen returnerer den formaterte strengen, og verbene er plassholdere for inngangene til strengen.

De Printf metoden formaterer inndata i henhold til formatspesifikasjonen og returnerer antall skrevne byte eller feil.

fmt. Printf("Dette er en test %v", 90)

Konvensjonelt trenger du ikke å bekymre deg for feil når du bruker Printf metode.

De Sprintf metode formaterer i henhold til det angitte formatet og returnerer resultatet som en streng.

var resultat = fmt. Sprintf("Dette er en test %v", 90)

De Fprintf metoden formaterer strengen og skriver den til en forfatter (metoder som implementerer io. Forfatter grensesnitt)

// skrive data til standard utgang
resultat, feil = fmt. Fprintf (skribent, "Dette er en test %v", 90)

De Fscanf metoden skanner fra en leser og formaterer i henhold til spesifisert format.

var ta streng

// les data fra den gitte strengen
readString := strenger. NewReader("Dette er en test")

les, feil := fmt. Fscanf (leser, "%v", &take)

I dette tilfellet Fscanf dekoder strengen fra leseren til ta variabel, og lese variabelen holder resultatet av formatet.

Strengeformateringsverb

Go gir mange formateringsverb som du kan bruke sammen med strengformateringsfunksjonene.

Det er generelle strengformateringsverb som %v verb i eksempler på strengformateringsfunksjoner. Du kan bruke de generelle strengformateringsverbene til å formatere enhver datatype.

Du kan bruke % #v verb for å skrive ut hvilken som helst verdi, den %+v for strukturer, den %T verb for typen av en hvilken som helst verdi, og %% verb for ingen verdier.

type noen struktur { 
Navn streng
alder int
er pålogget bool
}

var instans = enhver {
navn: "John Doe",
alder: 34,
er pålogget: ekte,
}

var resultat = fmt. Sprintf("Dette er en struktur formateringseksempel %+v", forekomst)
fmt. Println (resultat)

De resultat variabelen inneholder den formaterte strengen til den instansierte strukturen. Hvis du skriver det ut, skal det se omtrent slik ut:

Dette er et eksempel på strukturformatering {navn: John Doe alder: 34 erLoggedIn:ekte}

Det er verbene for formatering av spesifikke Go native datatyper, inkludert kanaler og pekere.

Verb Funksjonalitet
%t booleanere.
%d int, int8 osv.
%d, % #x hvis skrevet ut med % #v uint, uint8 osv.
%g float32, complex64, etc.
%s streng.
%p chan.
%P pekeren.

Du vil sørge for at du ikke gjør feil med verbene siden de skiller mellom store og små bokstaver, som chan og pekeren verb.

Formatering av heltall og flytende tall

Det finnes strengformateringsverb for formatering av heltall i forskjellige baser. Du kan bruke hvilket som helst av disse verbene til å formatere heltall

Verb Funksjonalitet
%b base 2
%c tegnet representert av det tilsvarende Unicode-kodepunktet.
%d base 10.
%o base 8.
%O base 8 med 0o prefiks.
%q en enkeltsitert karakter bokstavelig unnslapp trygt med Go-syntaks.
%x base 16, med små bokstaver for a-f.
%X base 16, med store bokstaver for A-F.
%U Unicode-format: U+1234; samme som "U+%04X".

Du kan for eksempel formatere et heltall ved å bruke %d verb:

var resultat = fmt. Sprintf("Dette er et heltallsformateringseksempel %d", 90)
fmt. Println (resultat)

Dette er verbene for formatering av flyttall.

Verb Funksjonalitet
%b desimalløs vitenskapelig notasjon med eksponent en potens av to, på samme måte som strconv. FormatFloat med "b"-formatet, f.eks. -123456p-78
%e vitenskapelig notasjon, f.eks. -1,234456e+78
%E desimal men ingen eksponent, f.eks. 123.456
%f desimal men ingen eksponent, f.eks. 123.456
%F synonym for %f.
%g %e for store eksponenter, %f ellers. Presisjon nedenfor.
%G %E for store eksponenter, %F ellers
%x heksadesimal notasjon (med desimal potens av to eksponenter), f.eks. -0x1,23abcp+20.
%X heksadesimal notasjon med store bokstaver, f.eks. -0X1.23ABCP+20.

Her er et eksempel på formatering av et desimaltegn uten eksponent med %f verb.

var resultat = fmt. Sprintf("Dette er et flytende kommaformateringseksempel %f", 432.9503)
fmt. Println (resultat)

Du kan alltid bruke de generelle verbene hvis du er usikker på typen.

Formatering av strenger og byte

Strenger og bit av bytetyper er ganske like i Go. Dette er flaggene for formatering av strenger og byte.

Verb Funksjonalitet
%s de utolkede bytene til strengen eller stykket
%q en streng med doble anførselstegn unnslapp trygt med Go-syntaks
%x base 16, små bokstaver, to tegn per byte
%X base 16, store bokstaver, to tegn per byte

Her er et eksempel på formatering av en streng med %s verb.

var score = "eksempel"
var resultat = fmt. Sprintf("Dette er en streng formateringseksempel %s", score)
fmt. Println (resultat)

Fmt-pakken er viktig for Python-programmering

De fmt pakken inneholder det meste av funksjonaliteten du trenger for strengformatering. Go gir også en strenger pakke for strengmanipulering og en Logg pakke som kan formatere strenger for logging.

De fmt pakken har funksjoner som implementerer io. Forfatter og io. Leser grensesnitt. Du vil finne det nyttig for mange brukstilfeller som å bygge nett- og kommandolinjeapplikasjoner.