Strengformatering
Nu hvor vi har lært om alle de grundlæggende datatyper, kan vi udforske strengformatering. Inden for programmering indebærer strengformatering at indsætte variabelværdier i strenge.
Bemærk
import-sætningen bruges til at importere pakker i en Go-applikation. En pakke er en samling af relaterede Go-kildefiler, der samarbejder om at tilbyde et sæt funktionaliteter eller tjenester.fmt-pakken tilbyder funktioner, der gør det muligt at formatere strenge.
En af funktionerne fra fmt-pakken, som vi har brugt, er Println-funktionen. Println-funktionen viser outputtekst på en ny linje hver gang. Der findes dog en funktion kaldet Print, som viser output uden at skifte til en ny linje:
index.go
12345678package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
Generelt kan vi bruge disse funktioner til at indsætte variabelværdier i strengdata ved hjælp af 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 metode er dog ikke særlig effektiv, fordi vi skal opdele strengen i mange segmenter for at indsætte variabler de relevante steder, hvilket kan blive besværligt i mere komplekse tilfælde. Funktionen Printf løser dette problem og forenkler processen med at vise formateret output.
Funktionen Printf tager en formatstreng som sit første argument, efterfulgt af værdier (eller variabler), der skal indsættes i formatstrengen. En formatstreng indeholder pladsholdere (formatspecifikatorer), der definerer det ønskede outputformat.
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 illustreret i eksemplet er formatspecifikatorer symboler, der fungerer som pladsholdere for bestemte datatyper i en streng. Der findes en særskilt formatspecifikator for hver datatype. Tabellen nedenfor indeholder en liste over grundlæggende formatspecifikatorer:
| Format Specifier | Data Type |
|---|---|
%d | Integer |
%s | String |
%f | Float |
%t | Boolean |
%c | Character (or Rune) |
Variablerne erstatter de respektive pladsholdere i formatstrengen. I outputtet fra eksemplet ovenfor bliver den første %d erstattet med værdien af n. Tilsvarende bliver den anden erstattet med den tilsvarende variabel, som er in, og den sidste %d bliver erstattet med værdien af out.
Vi kan også formatere en streng og gemme den i en strengvariabel ved hjælp af funktionen Sprintf, som formaterer en streng og returnerer den resulterende streng til lagring eller brug andetsteds, i stedet for at vise den direkte på skærmen:
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 mere komplekst eksempel, der inddrager flere af de koncepter, vi tidligere har gennemgået, i ét program. Det vil være en værdifuld øvelse at gennemgå følgende program og dets output for at styrke dine færdigheder i at læse 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 nogle tilfælde udfører compileren implicit typekonvertering for at matche værdier med format-specifikatorer, 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 værdi. Dog kan compileren i visse tilfælde give en fejl. For eksempel vil følgende kode resultere i en ugyldig output, fordi en 'float' ikke kan konverteres implicit til en 'int':
index.go
12var value float32 = 5.7 fmt.Printf("%d", value)
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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
Stryg for at vise menuen
Nu hvor vi har lært om alle de grundlæggende datatyper, kan vi udforske strengformatering. Inden for programmering indebærer strengformatering at indsætte variabelværdier i strenge.
Bemærk
import-sætningen bruges til at importere pakker i en Go-applikation. En pakke er en samling af relaterede Go-kildefiler, der samarbejder om at tilbyde et sæt funktionaliteter eller tjenester.fmt-pakken tilbyder funktioner, der gør det muligt at formatere strenge.
En af funktionerne fra fmt-pakken, som vi har brugt, er Println-funktionen. Println-funktionen viser outputtekst på en ny linje hver gang. Der findes dog en funktion kaldet Print, som viser output uden at skifte til en ny linje:
index.go
12345678package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
Generelt kan vi bruge disse funktioner til at indsætte variabelværdier i strengdata ved hjælp af 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 metode er dog ikke særlig effektiv, fordi vi skal opdele strengen i mange segmenter for at indsætte variabler de relevante steder, hvilket kan blive besværligt i mere komplekse tilfælde. Funktionen Printf løser dette problem og forenkler processen med at vise formateret output.
Funktionen Printf tager en formatstreng som sit første argument, efterfulgt af værdier (eller variabler), der skal indsættes i formatstrengen. En formatstreng indeholder pladsholdere (formatspecifikatorer), der definerer det ønskede outputformat.
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 illustreret i eksemplet er formatspecifikatorer symboler, der fungerer som pladsholdere for bestemte datatyper i en streng. Der findes en særskilt formatspecifikator for hver datatype. Tabellen nedenfor indeholder en liste over grundlæggende formatspecifikatorer:
| Format Specifier | Data Type |
|---|---|
%d | Integer |
%s | String |
%f | Float |
%t | Boolean |
%c | Character (or Rune) |
Variablerne erstatter de respektive pladsholdere i formatstrengen. I outputtet fra eksemplet ovenfor bliver den første %d erstattet med værdien af n. Tilsvarende bliver den anden erstattet med den tilsvarende variabel, som er in, og den sidste %d bliver erstattet med værdien af out.
Vi kan også formatere en streng og gemme den i en strengvariabel ved hjælp af funktionen Sprintf, som formaterer en streng og returnerer den resulterende streng til lagring eller brug andetsteds, i stedet for at vise den direkte på skærmen:
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 mere komplekst eksempel, der inddrager flere af de koncepter, vi tidligere har gennemgået, i ét program. Det vil være en værdifuld øvelse at gennemgå følgende program og dets output for at styrke dine færdigheder i at læse 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 nogle tilfælde udfører compileren implicit typekonvertering for at matche værdier med format-specifikatorer, 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 værdi. Dog kan compileren i visse tilfælde give en fejl. For eksempel vil følgende kode resultere i en ugyldig output, fordi en 'float' ikke kan konverteres implicit til en 'int':
index.go
12var value float32 = 5.7 fmt.Printf("%d", value)
Tak for dine kommentarer!