Når du skriver Go-kode, vil du finde strengformatering meget nyttig i mange situationer. Du parser måske input eller laver mere komplekst output end simpel sammenkædning. Du arbejder muligvis med andre typer end almindelige strenge.

Strengformatering i Go bruger den velkendte proces og syntaks for printf-funktionen, som sprog fra Java til Haskell også bruger.

Go giver forskellige metoder til formatering af strenge i fmt pakke. Du kan bruge funktioner og verber til strengformatering afhængigt af den handling eller input, du vil formatere.

Stringformatering i Go

Funktionerne i fmt-pakken ligner modparter, f.eks printf-funktionen i bash eller C. Go henter sine formateringsverber fra C.

Du bruger strengformaterende verber som pladsholdere for dine variabelværdier i en indeholdende streng. Du kan derefter sende den formateringsstreng til en funktion som f.eks Printf, sammen med værdier, der svarer til disse pladsholdere.

Du kan ikke bruge strengformateringsverber med Print og Udskrivln metoder. Du kan bruge dem med metoder som f.eks Printf og Sprintf.

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

Det %v verbet udskriver enhver værdi i standardformatet. Det Udskrivln Metoden genkender ikke verber og udskriver de argumenter, den modtager. Det Printf og Sprintf funktioner begge formaterer det første streng-argument, du sender til dem.

Strengformateringsfunktioner i fmt-pakken

Formater strenge ind programmeringssproget Go kræver, at du bruger en strengformateringsfunktion og et verbum. Funktionen returnerer den formaterede streng, og verberne er pladsholdere for input til strengen.

Det Printf metode formaterer input i henhold til formatspecifikationen og returnerer antallet af skrevne bytes eller fejl.

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

Konventionelt behøver du ikke bekymre dig om fejl, når du bruger Printf metode.

Det Sprintf metode formaterer i henhold til det angivne format og returnerer resultatet som en streng.

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

Det Fprintf metode formaterer strengen og skriver den til en forfatter (metoder, der implementerer io. Forfatter grænseflade)

// skriv data til standard output
resultat, fejl = fmt. Fprintf (skribent, "Dette er en test %v", 90)

Det Fscanf metoden scanner fra en læser og formaterer i henhold til det angivne format.

var tage snor

// læs data fra den givne streng
readString := strenge. NewReader("Dette er en test")

læs, fejl := fmt. Fscanf (læser, "%v", &take)

I dette tilfælde Fscanf afkoder strengen fra læseren til tage variabel, og Læs variabel indeholder resultatet af formatet.

De strengformaterende verber

Go giver mange formateringsverber, som du kan bruge sammen med strengformateringsfunktionerne.

Der er generelle strengformateringsverber som %v verbum i eksemplerne på strengformateringsfunktioner. Du kan bruge de generelle strengformateringsverber til at formatere enhver datatype.

Du kan bruge % #v verbum til at udskrive enhver værdi, den %+v for structs, den %T verbum for typen af ​​enhver værdi, og %% verbum for ingen værdier.

type nogen struktur { 
navn snor
alder int
er logget på bool
}

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

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

Det resultat variabel indeholder den formaterede streng af den instansierede struktur. Hvis du printer det ud, skulle det se sådan ud:

Dette er et eksempel på strukturformatering {navn: John Doe alder: 34 isLoggedIn:rigtigt}

Der er verberne til formatering af specifikke Go native datatyper, inklusive kanaler og pointere.

Udsagnsord Funktionalitet
%t booleans.
%d int, int8 osv.
%d, % #x hvis udskrevet med % #v uint, uint8 osv.
%g float32, complex64 osv.
%s snor.
%p chan.
%P pointer.

Du vil gerne sikre dig, at du ikke laver fejl med verberne, da de skelner mellem store og små bogstaver, som f.eks. chan og pointer verber.

Formatering af heltal og flydende tal

Der er strengformateringsverber til formatering af heltal i forskellige baser. Du kan bruge et hvilket som helst af disse verber til at formatere heltal

Udsagnsord Funktionalitet
%b base 2
%c tegnet repræsenteret af det tilsvarende Unicode-kodepunkt.
%d base 10.
%o base 8.
%O base 8 med 0o præfiks.
%q et bogstav med et enkelt citeret tegn undslap sikkert med Go-syntaks.
%x base 16, med små bogstaver for a-f.
%X base 16, med store bogstaver for A-F.
%U Unicode-format: U+1234; samme som "U+%04X".

For eksempel kan du formatere et heltal ved hjælp af %d udsagnsord:

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

Dette er verberne til formatering af flydende kommatal.

Udsagnsord Funktionalitet
%b decimalløs videnskabelig notation med eksponent en potens af to, på samme måde som strconv. FormatFloat med 'b'-formatet, f.eks. -123456p-78
%e videnskabelig notation, f.eks. -1,234456e+78
%E decimal, men ingen eksponent, f.eks. 123.456
%f decimal, men ingen eksponent, f.eks. 123.456
%F synonym for %f.
%g %e for store eksponenter, %f ellers. Præcision nedenfor.
%G %E for store eksponenter, %F ellers
%x hexadecimal notation (med decimalpotens af to eksponenter), f.eks. -0x1,23abcp+20.
%X hexadecimal notation med store bogstaver, f.eks. -0X1.23ABCP+20.

Her er et eksempel på formatering af et decimaltegn uden eksponent med %f udsagnsord.

var resultat = fmt. Sprintf("Dette er et flydende komma-formateringseksempel %f", 432.9503)
fmt. Println (resultat)

Du kan altid bruge de generelle verber, hvis du er usikker på typen.

Formatering af strenge og bytes

Strenge og udsnit af bytetyper er ret ens i Go. Disse er flagene til formatering af strenge og bytes.

Udsagnsord Funktionalitet
%s de ufortolkede bytes af strengen eller udsnittet
%q en streng med to citater, der er sikkert undslippet med Go-syntaks
%x base 16, små bogstaver, to tegn pr. byte
%X base 16, store bogstaver, to tegn pr. byte

Her er et eksempel på formatering af en streng med %s udsagnsord.

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

fmt-pakken er afgørende for Python-programmering

Det fmt pakken indeholder det meste af den funktionalitet, du skal bruge til strengformatering. Go giver også en strenge pakke til strengmanipulation og en log pakke, der kan formatere strenge til logning.

Det fmt pakken har funktioner, der implementerer io. Forfatter og io. Læser grænseflader. Du vil finde det nyttigt til mange brugssager som at bygge web- og kommandolinjeapplikationer.