Sådan formateres strenge i Go

Sådan formateres strenge i Go

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.

mus ude af kontrol windows 10

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 .

fmt.Println("This is a test %v", 90) 
fmt.Printf("This is a test %v", 90)

Det %i 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.





  resultat af formatering af heltal

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("This is a 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 result = fmt.Sprintf("This is a test %v", 90) 

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

// write data to standard output 
result, err = fmt.Fprintf(writer, "This is a test %v", 90)

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

var take string 

// read data from the given string
readString := strings.NewReader("This is a test")

read, err := fmt.Fscanf(reader, "%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 %i verbum i eksemplerne på strengformateringsfunktioner. Du kan bruge de generelle strengformateringsverber til at formatere enhver datatype.

Du kan bruge %#i 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 any struct {  
name string
age int
isLoggedIn bool
}

var instance = any {
name: "John Doe",
age: 34,
isLoggedIn: true,
}

var result = fmt.Sprintf("This is a struct formatting example %+v", instance)
fmt.Println(result)

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

This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}

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

%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

%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.
%I Unicode-format: U+1234; samme som 'U+%04X'.

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

var result = fmt.Sprintf("This is an integer formatting example %d", 90) 
fmt.Println(result)

Dette er verberne til formatering af flydende kommatal.

%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
%og videnskabelig notation, f.eks. -1,234456e+78
%OG 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 result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503) 
fmt.Println(result)

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.

%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 = "example" 
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)

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. Writer og io.Reader grænseflader. Du vil finde det nyttigt til mange brugssager som at bygge web- og kommandolinjeapplikationer.