Wie kann man mit Strings in der Programmiersprache Go arbeiten?
sobes.tech KI
Antwort von AI
Zeichenketten in Go sind unveränderliche Sequenzen von Bytes. Sie können sowohl UTF-8-Text als auch beliebige binäre Daten darstellen.
Hauptmethoden:
-
Deklaration und Initialisierung:
var s1 string // Leere Zeichenkette s2 := "hallo" // Initialisierung mit Literal s3 := `mehrzeilig zeichenkette` // Raw-String-Literal -
Länge der Zeichenkette:
len(s2) // Länge in Bytes. Für "hallo" ist es 5. -
Zugriff auf Bytes:
b := s2[0] // Byte an Index. Gibt 'h' zurück (in UTF-8).Direkter Zugriff auf Bytes garantiert nicht, dass ein vollständiges UTF-8-Zeichen erhalten wird.
-
Zugriff auf Runen (UTF-8-Zeichen): Zeichenketten können über Runen iteriert werden:
for index, runeValue := range s2 { fmt.Printf("Index: %d, Rune: %c\n", index, runeValue) }Länge in Runen:
utf8.RuneCountInString(s2) // Länge in Runen. Für "hallo" ist es 5. -
Zeichenkettenverkettung:
str1 := "hello" str2 := " world" result := str1 + str2 // Verkettung mit +Für effiziente Verkettung vieler Zeichenketten verwenden Sie
strings.Builder.var sb strings.Builder sb.WriteString("hello") sb.WriteString(" ") sb.WriteString("world") result := sb.String() // Ergebniszeichenkette -
Umwandlung zwischen Zeichenketten und Byte-/Rune-Slices:
byteslice := []byte(s2) // Zeichenkette zu Byte-Slice rs := []rune(s2) // Zeichenkette zu Rune-Slice backToString := string(byteslice) // Byte-Slice zu Zeichenkette backToString = string(rs) // Rune-Slice zu Zeichenkette -
Paket
strings: Bietet viele nützliche Funktionen:Contains,HasPrefix,HasSuffixIndex,LastIndexReplace,ToUpper,ToLower,Trim,TrimSpaceSplit,Join
-
Paket
strconv: Für die Umwandlung von Zeichenketten in andere Datentypen (Zahlen, boolesche Werte) und umgekehrt.i, err := strconv.Atoi("123") // Zeichenkette zu int s := strconv.Itoa(456) // int zu Zeichenkette -
Unveränderlichkeit: Jegliche Operationen, die eine Zeichenkette zu verändern scheinen (z.B. Verkettung), erstellen tatsächlich eine neue Zeichenkette. Dies ist wichtig für die Leistung bei häufigen Änderungen. In solchen Fällen ist es besser,
[]byteoderstrings.Builderzu verwenden.