Wichtige Go-Themen
Go Runes, Bytes and strings.Builder
Why len("héllo") is 6, how to work with characters, and how to build long strings fast.
Das lernst du
- Bytes vs runes
- []rune
- strings.Builder
héllo
h0
é1-2
l3
l4
o5
Bytes are not characters
A Go string is a sequence of bytes, and a character outside ASCII takes more than one byte. A rune is one Unicode character. Converting a string to []rune lets you work with characters instead of bytes.
héllo has 5 characters but 6 bytes, because é takes two bytes; that is why the positions printed by range jump from 1 to 3. []rune makes the characters editable. strings.Builder joins many pieces without creating a new string each time.
Das Wichtigste
- é takes two bytes in UTF-8.
- range gives runes, not bytes.
- []rune makes characters editable.
Ausführbares Go-Beispiel
main.go
package main
import (
"fmt"
"strings"
"unicode/utf8"
)
func main() {
word := "héllo"
fmt.Println(len(word), utf8.RuneCountInString(word))
parts := []string{}
for index, r := range word {
parts = append(parts, fmt.Sprintf("%d:%c", index, r))
}
fmt.Println(strings.Join(parts, " "))
runes := []rune(word)
runes[1] = 'e'
fmt.Println(string(runes), len(runes))
bytes := []byte("Go")
fmt.Println(bytes, string(bytes[0]))
var builder strings.Builder
for i := 3; i > 0; i-- {
fmt.Fprintf(&builder, "%d...", i)
}
builder.WriteString("go!")
fmt.Println(builder.String())
}
6 5
0:h 1:é 3:l 4:l 5:o
hello 5
[71 111] G
3...2...1...go!Üben
Öffne das Beispiel im Online-Compiler, ändere einen Wert oder füge eine Zeile hinzu und sage die Ausgabe voraus, bevor du es ausführst. Bring den Code danach absichtlich zum Scheitern und lies die Meldung des Compilers.
Lektion fertig?
Markiere sie als gelernt, um deinen Fortschritt zu verfolgen.
Dein Fortschritt ist in diesem Browser gespeichert Melde dich an, um ihn auf jedem Gerät zu behalten.
Mit einer Challenge üben
Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.
- Count Uppercase Letters Count the capital letters in a text. Einfach
- Zeichenhäufigkeit Zähle, wie oft jedes Zeichen vorkommt. Einfach