Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Tekenreeksopmaak | Gegevenstypen
Introductie tot Golang

bookTekenreeksopmaak

Nu we alle basisgegevenstypen hebben behandeld, kunnen we stringopmaak verkennen. In programmeren houdt stringopmaak in dat variabele waarden in strings worden opgenomen.

Opmerking

De import-instructie wordt gebruikt om packages in een Go-toepassing te importeren. Een package is een verzameling gerelateerde Go-bronbestanden die samenwerken om een set functionaliteiten of diensten te bieden. Het fmt-pakket biedt functies waarmee we strings kunnen opmaken.

Een van de functies uit het fmt-pakket die we hebben gebruikt, is de functie Println. De functie Println toont uitvoertekst telkens op een nieuwe regel. Er is echter ook een functie genaamd Print die uitvoer weergeeft zonder naar een nieuwe regel te gaan:

index.go

index.go

copy
12345678
package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }

Over het algemeen kunnen deze functies worden gebruikt om variabele waarden in te voegen binnen tekenreeksgegevens met behulp van de volgende methode:

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.") }

Deze methode is echter niet erg efficiënt omdat de tekenreeks in meerdere segmenten moet worden verdeeld om variabelen op de juiste plaatsen in te voegen, wat omslachtig kan worden in complexere gevallen. De functie Printf lost dit probleem op en vereenvoudigt het proces van het weergeven van geformatteerde uitvoer.

De functie Printf neemt een opmaaktekenreeks als eerste argument, gevolgd door waarden (of variabelen) die in de opmaaktekenreeks moeten worden ingevoegd. Een opmaaktekenreeks bevat aanduidingen (opmaakspecificaties) die het gewenste uitvoerformaat bepalen.

Het volgende is een voorbeeld:

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) }

Zoals geïllustreerd door het voorbeeld zijn formatspecificaties symbolen die dienen als plaatsaanduiding voor specifieke gegevenstypen binnen een string. Voor elk gegevenstype bestaat er een aparte formatspecificatie. De onderstaande tabel geeft een overzicht van de basis formatspecificaties:

FormaatspecificatieGegevenstype
%dInteger
%sString
%fFloat
%tBoolean
%cCharacter (of Rune)

De variabelen vervangen de respectievelijke placeholders in de formatstring. In de uitvoer van het bovenstaande voorbeeld wordt de eerste %d vervangen door de waarde van n. Op dezelfde manier wordt de tweede vervangen door de corresponderende variabele, namelijk in, en de laatste %d wordt vervangen door de waarde van out.

We kunnen ook een string formatteren en deze opslaan in een stringvariabele met behulp van de functie Sprintf, die een string formatteert en de resulterende string retourneert voor opslag of gebruik elders, in plaats van deze direct op het scherm weer te geven:

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) }

Hier volgt een complexer voorbeeld waarin meerdere eerder behandelde concepten in één programma worden gecombineerd. Het is een waardevolle oefening om het onderstaande programma en de uitvoer te bestuderen ter verbetering van je code-leesvaardigheden:

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) }

In sommige gevallen voert de compiler impliciete typecasting uit om waarden aan te passen aan de formaat-specificaties, zoals aangetoond in het volgende voorbeeld:

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) }

De rune 'char' wordt zowel als teken als als numerieke waarde weergegeven. In sommige gevallen kan de compiler echter een foutmelding geven. Bijvoorbeeld, de volgende code zal een ongeldige uitvoer opleveren omdat een 'float' niet impliciet kan worden omgezet naar een 'int':

index.go

index.go

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

Wat zal de uitvoer zijn van het onderstaande programma?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 7

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 1.96

bookTekenreeksopmaak

Veeg om het menu te tonen

Nu we alle basisgegevenstypen hebben behandeld, kunnen we stringopmaak verkennen. In programmeren houdt stringopmaak in dat variabele waarden in strings worden opgenomen.

Opmerking

De import-instructie wordt gebruikt om packages in een Go-toepassing te importeren. Een package is een verzameling gerelateerde Go-bronbestanden die samenwerken om een set functionaliteiten of diensten te bieden. Het fmt-pakket biedt functies waarmee we strings kunnen opmaken.

Een van de functies uit het fmt-pakket die we hebben gebruikt, is de functie Println. De functie Println toont uitvoertekst telkens op een nieuwe regel. Er is echter ook een functie genaamd Print die uitvoer weergeeft zonder naar een nieuwe regel te gaan:

index.go

index.go

copy
12345678
package main import "fmt" func main() { fmt.Print("1") fmt.Print(" 2") fmt.Print(" 3") }

Over het algemeen kunnen deze functies worden gebruikt om variabele waarden in te voegen binnen tekenreeksgegevens met behulp van de volgende methode:

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.") }

Deze methode is echter niet erg efficiënt omdat de tekenreeks in meerdere segmenten moet worden verdeeld om variabelen op de juiste plaatsen in te voegen, wat omslachtig kan worden in complexere gevallen. De functie Printf lost dit probleem op en vereenvoudigt het proces van het weergeven van geformatteerde uitvoer.

De functie Printf neemt een opmaaktekenreeks als eerste argument, gevolgd door waarden (of variabelen) die in de opmaaktekenreeks moeten worden ingevoegd. Een opmaaktekenreeks bevat aanduidingen (opmaakspecificaties) die het gewenste uitvoerformaat bepalen.

Het volgende is een voorbeeld:

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) }

Zoals geïllustreerd door het voorbeeld zijn formatspecificaties symbolen die dienen als plaatsaanduiding voor specifieke gegevenstypen binnen een string. Voor elk gegevenstype bestaat er een aparte formatspecificatie. De onderstaande tabel geeft een overzicht van de basis formatspecificaties:

FormaatspecificatieGegevenstype
%dInteger
%sString
%fFloat
%tBoolean
%cCharacter (of Rune)

De variabelen vervangen de respectievelijke placeholders in de formatstring. In de uitvoer van het bovenstaande voorbeeld wordt de eerste %d vervangen door de waarde van n. Op dezelfde manier wordt de tweede vervangen door de corresponderende variabele, namelijk in, en de laatste %d wordt vervangen door de waarde van out.

We kunnen ook een string formatteren en deze opslaan in een stringvariabele met behulp van de functie Sprintf, die een string formatteert en de resulterende string retourneert voor opslag of gebruik elders, in plaats van deze direct op het scherm weer te geven:

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) }

Hier volgt een complexer voorbeeld waarin meerdere eerder behandelde concepten in één programma worden gecombineerd. Het is een waardevolle oefening om het onderstaande programma en de uitvoer te bestuderen ter verbetering van je code-leesvaardigheden:

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) }

In sommige gevallen voert de compiler impliciete typecasting uit om waarden aan te passen aan de formaat-specificaties, zoals aangetoond in het volgende voorbeeld:

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) }

De rune 'char' wordt zowel als teken als als numerieke waarde weergegeven. In sommige gevallen kan de compiler echter een foutmelding geven. Bijvoorbeeld, de volgende code zal een ongeldige uitvoer opleveren omdat een 'float' niet impliciet kan worden omgezet naar een 'int':

index.go

index.go

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

Wat zal de uitvoer zijn van het onderstaande programma?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 7
some-alt