Strengformatering
Nå som vi har lært om alle de grunnleggende datatypene, kan vi utforske strengformatering. I programmering innebærer strengformatering å sette inn variabelverdier i strenger.
Merk
import-setningen brukes for å importere pakker i en Go-applikasjon. En pakke er en samling relaterte Go-kildefiler som samarbeider for å tilby et sett med funksjoner eller tjenester.fmt-pakken gir funksjoner som lar oss formatere strenger.
En av funksjonene fra fmt-pakken som vi har brukt, er Println-funksjonen. Println-funksjonen viser utdata på en ny linje hver gang. Det finnes imidlertid en funksjon som heter Print som viser utdata uten å gå til en ny linje:
index.go
12345678package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
Generelt kan vi bruke disse funksjonene til å sette inn variabelverdier i strengdata ved å bruke følgende metode:
index.go
123456789package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Println("There are", n, "cats,", in, "of them are inside the house while", out, "are outside.") }
Denne metoden er imidlertid ikke særlig effektiv fordi vi må dele opp strengen i mange segmenter for å sette inn variabler på relevante steder, noe som kan bli tungvint i mer komplekse tilfeller. Printf-funksjonen løser dette problemet og forenkler prosessen med å vise formatert utdata.
Printf-funksjonen tar en formatstreng som sitt første argument, etterfulgt av verdier (eller variabler) som skal settes inn i formatstrengen. En formatstreng inneholder plassholdere (formatspecifiers) som definerer ønsket format på utdata.
Følgende er et eksempel:
index.go
12345678910package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Printf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) }
Som illustrert i eksemplet, er formatsymboler symboler som fungerer som plassholdere for bestemte datatyper i en streng. Det finnes et eget formatsymbol for hver datatype. Tabellen nedenfor gir en oversikt over grunnleggende formatsymboler:
| Formatspesifikator | Datatype |
|---|---|
%d | Integer |
%s | String |
%f | Float |
%t | Boolean |
%c | Character (eller Rune) |
Variablene erstatter de respektive plassholderne i formatstrengen. I utdataene fra eksempelet ovenfor blir den første %d erstattet med verdien til n. Tilsvarende blir den andre erstattet med den tilhørende variabelen, som er in, og den siste %d blir erstattet med verdien til out.
Vi kan også formatere en streng og lagre den i en strengvariabel ved å bruke funksjonen Sprintf, som formaterer en streng og returnerer den resulterende strengen for lagring eller bruk andre steder, i stedet for å vise den direkte på skjermen:
index.go
123456789101112package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in var text string = fmt.Sprintf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) fmt.Println("Text:", text) }
Her er et mer komplekst eksempel som inkluderer flere konsepter vi tidligere har gjennomgått i ett enkelt program. Det vil være en verdifull øvelse å gjennomgå følgende program og dets utdata for å styrke dine ferdigheter i å lese kode:
index.go
12345678910package main import "fmt" func main() { var numA float32 = 17.7 var numB int = 10 var str string = fmt.Sprintf("It is %t that 'a' is bigger than 'b'.", numA > float32(numB)) fmt.Printf("The numbers 'a' and 'b' are %f and %d. %s", numA, numB, str) }
I noen tilfeller utfører kompilatoren implisitt typekonvertering for å matche verdier med formatspesifikatorer, som vist i følgende eksempel:
index.go
1234567package main import "fmt" func main() { var char rune = 'A' fmt.Printf("The Unicode decimal value of %c is %d", char, char) }
Runen 'char' vises både som et tegn og som en numerisk verdi. I enkelte tilfeller kan det imidlertid oppstå en kompilatorfeil. For eksempel vil følgende kode gi ugyldig utdata fordi en 'float' ikke kan konverteres implisitt til en 'int':
index.go
12var value float32 = 5.7 fmt.Printf("%d", value)
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you explain more about how to use different format specifiers?
What happens if I use the wrong format specifier for a variable?
Can you show more examples of string formatting in Go?
Awesome!
Completion rate improved to 1.96
Strengformatering
Sveip for å vise menyen
Nå som vi har lært om alle de grunnleggende datatypene, kan vi utforske strengformatering. I programmering innebærer strengformatering å sette inn variabelverdier i strenger.
Merk
import-setningen brukes for å importere pakker i en Go-applikasjon. En pakke er en samling relaterte Go-kildefiler som samarbeider for å tilby et sett med funksjoner eller tjenester.fmt-pakken gir funksjoner som lar oss formatere strenger.
En av funksjonene fra fmt-pakken som vi har brukt, er Println-funksjonen. Println-funksjonen viser utdata på en ny linje hver gang. Det finnes imidlertid en funksjon som heter Print som viser utdata uten å gå til en ny linje:
index.go
12345678package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
Generelt kan vi bruke disse funksjonene til å sette inn variabelverdier i strengdata ved å bruke følgende metode:
index.go
123456789package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Println("There are", n, "cats,", in, "of them are inside the house while", out, "are outside.") }
Denne metoden er imidlertid ikke særlig effektiv fordi vi må dele opp strengen i mange segmenter for å sette inn variabler på relevante steder, noe som kan bli tungvint i mer komplekse tilfeller. Printf-funksjonen løser dette problemet og forenkler prosessen med å vise formatert utdata.
Printf-funksjonen tar en formatstreng som sitt første argument, etterfulgt av verdier (eller variabler) som skal settes inn i formatstrengen. En formatstreng inneholder plassholdere (formatspecifiers) som definerer ønsket format på utdata.
Følgende er et eksempel:
index.go
12345678910package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in fmt.Printf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) }
Som illustrert i eksemplet, er formatsymboler symboler som fungerer som plassholdere for bestemte datatyper i en streng. Det finnes et eget formatsymbol for hver datatype. Tabellen nedenfor gir en oversikt over grunnleggende formatsymboler:
| Formatspesifikator | Datatype |
|---|---|
%d | Integer |
%s | String |
%f | Float |
%t | Boolean |
%c | Character (eller Rune) |
Variablene erstatter de respektive plassholderne i formatstrengen. I utdataene fra eksempelet ovenfor blir den første %d erstattet med verdien til n. Tilsvarende blir den andre erstattet med den tilhørende variabelen, som er in, og den siste %d blir erstattet med verdien til out.
Vi kan også formatere en streng og lagre den i en strengvariabel ved å bruke funksjonen Sprintf, som formaterer en streng og returnerer den resulterende strengen for lagring eller bruk andre steder, i stedet for å vise den direkte på skjermen:
index.go
123456789101112package main import "fmt" func main() { var n int = 5 var in int = n / 2 var out int = n - in var text string = fmt.Sprintf("There are %d cats, %d of them are inside the house with %d of them are outside. ", n, in, out) fmt.Println("Text:", text) }
Her er et mer komplekst eksempel som inkluderer flere konsepter vi tidligere har gjennomgått i ett enkelt program. Det vil være en verdifull øvelse å gjennomgå følgende program og dets utdata for å styrke dine ferdigheter i å lese kode:
index.go
12345678910package main import "fmt" func main() { var numA float32 = 17.7 var numB int = 10 var str string = fmt.Sprintf("It is %t that 'a' is bigger than 'b'.", numA > float32(numB)) fmt.Printf("The numbers 'a' and 'b' are %f and %d. %s", numA, numB, str) }
I noen tilfeller utfører kompilatoren implisitt typekonvertering for å matche verdier med formatspesifikatorer, som vist i følgende eksempel:
index.go
1234567package main import "fmt" func main() { var char rune = 'A' fmt.Printf("The Unicode decimal value of %c is %d", char, char) }
Runen 'char' vises både som et tegn og som en numerisk verdi. I enkelte tilfeller kan det imidlertid oppstå en kompilatorfeil. For eksempel vil følgende kode gi ugyldig utdata fordi en 'float' ikke kan konverteres implisitt til en 'int':
index.go
12var value float32 = 5.7 fmt.Printf("%d", value)
Takk for tilbakemeldingene dine!