Strängformatering
Nu när vi har lärt oss om alla grundläggande datatyper kan vi utforska strängformatering. Inom programmering innebär strängformatering att infoga variabelvärden i strängar.
Obs
import-satsen används för att importera paket i en Go-applikation. Ett paket är en samling relaterade Go-källfiler som samarbetar för att erbjuda en uppsättning funktioner eller tjänster. Paketetfmttillhandahåller funktioner som gör det möjligt att formatera strängar.
En av funktionerna från paketet fmt som vi har använt är funktionen Println. Funktionen Println visar utdata på en ny rad varje gång. Det finns dock en funktion som heter Print som visar utdata utan att gå till en ny rad:
index.go
12345678package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
Generellt kan dessa funktioner användas för att infoga variabelvärden i strängdata med följande metod:
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.") }
Denna metod är dock inte särskilt effektiv eftersom strängen måste delas upp i flera segment för att infoga variabler på relevanta platser, vilket kan bli omständligt i mer komplexa fall. Funktionen Printf löser detta problem och förenklar processen för att visa formaterad utdata.
Funktionen Printf tar en formatsträng som sitt första argument, följt av värden (eller variabler) som ska infogas i formatsträngen. En formatsträng innehåller platshållare (formatspecifikatorer) som definierar önskat format på utdata.
Följande är ett exempel:
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 illustreras av exemplet är formatspecifikatorer symboler som fungerar som platshållare för specifika datatyper inom en sträng. Det finns en särskild formatspecifikator för varje datatyp. Tabellen nedan visar en lista över grundläggande formatspecifikatorer:
| Format Specifier | Data Type |
|---|---|
%d | Integer |
%s | String |
%f | Float |
%t | Boolean |
%c | Character (or Rune) |
Variabler ersätter respektive platshållare i formatsträngen. I utdata från exemplet ovan ersätts den första %d med värdet av n. På samma sätt ersätts den andra med motsvarande variabel, vilket är in, och den sista %d ersätts med värdet av out.
Vi kan också formatera en sträng och lagra den i en strängvariabel med funktionen Sprintf, som formaterar en sträng och returnerar den resulterande strängen för lagring eller vidare användning, istället för att direkt visa den 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) }
Här är ett mer komplext exempel som kombinerar flera koncept vi tidigare har gått igenom i ett enda program. Det är en värdefull övning att granska följande program och dess utdata för att förbättra dina färdigheter i kodläsning:
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 vissa fall utför kompilatorn implicit typomvandling för att matcha värden med format-specifikatorer, vilket demonstreras i följande exempel:
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' skrivs ut både som tecken och som numeriskt värde. I vissa fall kan dock kompilatorn generera ett fel. Till exempel kommer följande kod att resultera i en ogiltig utmatning eftersom en 'float' inte kan konverteras implicit till en 'int':
index.go
12var value float32 = 5.7 fmt.Printf("%d", value)
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 1.96
Strängformatering
Svep för att visa menyn
Nu när vi har lärt oss om alla grundläggande datatyper kan vi utforska strängformatering. Inom programmering innebär strängformatering att infoga variabelvärden i strängar.
Obs
import-satsen används för att importera paket i en Go-applikation. Ett paket är en samling relaterade Go-källfiler som samarbetar för att erbjuda en uppsättning funktioner eller tjänster. Paketetfmttillhandahåller funktioner som gör det möjligt att formatera strängar.
En av funktionerna från paketet fmt som vi har använt är funktionen Println. Funktionen Println visar utdata på en ny rad varje gång. Det finns dock en funktion som heter Print som visar utdata utan att gå till en ny rad:
index.go
12345678package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }
Generellt kan dessa funktioner användas för att infoga variabelvärden i strängdata med följande metod:
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.") }
Denna metod är dock inte särskilt effektiv eftersom strängen måste delas upp i flera segment för att infoga variabler på relevanta platser, vilket kan bli omständligt i mer komplexa fall. Funktionen Printf löser detta problem och förenklar processen för att visa formaterad utdata.
Funktionen Printf tar en formatsträng som sitt första argument, följt av värden (eller variabler) som ska infogas i formatsträngen. En formatsträng innehåller platshållare (formatspecifikatorer) som definierar önskat format på utdata.
Följande är ett exempel:
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 illustreras av exemplet är formatspecifikatorer symboler som fungerar som platshållare för specifika datatyper inom en sträng. Det finns en särskild formatspecifikator för varje datatyp. Tabellen nedan visar en lista över grundläggande formatspecifikatorer:
| Format Specifier | Data Type |
|---|---|
%d | Integer |
%s | String |
%f | Float |
%t | Boolean |
%c | Character (or Rune) |
Variabler ersätter respektive platshållare i formatsträngen. I utdata från exemplet ovan ersätts den första %d med värdet av n. På samma sätt ersätts den andra med motsvarande variabel, vilket är in, och den sista %d ersätts med värdet av out.
Vi kan också formatera en sträng och lagra den i en strängvariabel med funktionen Sprintf, som formaterar en sträng och returnerar den resulterande strängen för lagring eller vidare användning, istället för att direkt visa den 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) }
Här är ett mer komplext exempel som kombinerar flera koncept vi tidigare har gått igenom i ett enda program. Det är en värdefull övning att granska följande program och dess utdata för att förbättra dina färdigheter i kodläsning:
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 vissa fall utför kompilatorn implicit typomvandling för att matcha värden med format-specifikatorer, vilket demonstreras i följande exempel:
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' skrivs ut både som tecken och som numeriskt värde. I vissa fall kan dock kompilatorn generera ett fel. Till exempel kommer följande kod att resultera i en ogiltig utmatning eftersom en 'float' inte kan konverteras implicit till en 'int':
index.go
12var value float32 = 5.7 fmt.Printf("%d", value)
Tack för dina kommentarer!