Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Strängformatering | Datatyper
Introduktion till Golang

bookSträ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. Paketet fmt tillhandahå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

index.go

copy
12345678
package 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

index.go

copy
123456789
package 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

index.go

copy
12345678910
package 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 SpecifierData Type
%dInteger
%sString
%fFloat
%tBoolean
%cCharacter (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

index.go

copy
123456789101112
package 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

index.go

copy
12345678910
package 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

index.go

copy
1234567
package 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

index.go

copy
12
var value float32 = 5.7 fmt.Printf("%d", value)
question mark

Vad blir utdata från programmet nedan?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 7

Fråga AI

expand

Fråga AI

ChatGPT

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

bookSträ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. Paketet fmt tillhandahå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

index.go

copy
12345678
package 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

index.go

copy
123456789
package 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

index.go

copy
12345678910
package 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 SpecifierData Type
%dInteger
%sString
%fFloat
%tBoolean
%cCharacter (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

index.go

copy
123456789101112
package 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

index.go

copy
12345678910
package 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

index.go

copy
1234567
package 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

index.go

copy
12
var value float32 = 5.7 fmt.Printf("%d", value)
question mark

Vad blir utdata från programmet nedan?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 7
some-alt