Ein string in Go ist eine unveränderliche Folge von Bytes, die nicht unbedingt Zeichen darstellen müssen.
Ein Zeichenketten-Literal wird zwischen doppelten Anführungszeichen definiert:
const name = "Jane"
Zeichenketten kannst du mit dem +-Operator verketten:
"Jane" + " " + "Austen"
// => "Jane Austen"
Einige Sonderzeichen müssen mit einem vorangestellten Backslash maskiert werden, zum Beispiel \t für einen Tabulator und \n für einen Zeilenumbruch in Zeichenketten.
"How is the weather today?\nIt's sunny"
// =>
// How is the weather today?
// It's sunny
Das Paket strings enthält viele nützliche Funktionen, mit denen du Zeichenketten bearbeiten kannst.
Weitere Informationen über Zeichenketten-Funktionen findest du in der Dokumentation des strings-Pakets.
Hier sind einige Beispiele:
import "strings"
// strings.ToLower returns the string given as argument with all its characters lowercased
strings.ToLower("MaKEmeLoweRCase")
// => "makemelowercase"
// strings.Repeat returns a string with a substring given as argument repeated many times
strings.Repeat("Go", 3)
// => "GoGoGo"
Wie bereits erwähnt, müssen einige Sonderzeichen mit einem vorangestellten Backslash maskiert werden. Im Folgenden findest du eine genauere Liste dieser Sonderzeichen:
| Wert | Beschreibung |
|---|---|
\a |
Alarm oder Klingelton |
\b |
Rücktaste |
\\ |
Backslash |
\t |
Horizontaler Tabulator |
\n |
Zeilenvorschub oder Zeilenumbruch |
\f |
Seitenvorschub |
\r |
Wagenrücklauf |
\v |
Vertikaler Tabulator |
\' |
Einfaches Anführungszeichen |
\" |
Doppeltes Anführungszeichen |
fmt.Println("Joe\nWilliam\nJack\nAverell")
// Output:
// Joe
// William
// Jack
// Averell
Rohe Zeichenketten-Literale verwenden Backticks (`) als Begrenzungszeichen statt doppelter Anführungszeichen, und alle Zeichen darin werden wörtlich interpretiert. Das heißt, du musst weder Zeichen noch Zeilenumbrüche maskieren.
Das ist ein Beispiel für eine mehrzeilige Zeichenkette:
const daltons = `Joe
William
Jack
Averell`
Diese Zeichenkette hat mehrere Zeilen.
Genauer gesagt enthält sie 3 \n.
Da es sich aber um ein rohes Zeichenketten-Literal handelt, müssen wir die \n nicht explizit in die Zeichenkette schreiben.
Die Zeilenumbrüche werden wörtlich interpretiert.
Hier sind weitere Beispiele, die rohe Zeichenketten-Literale mit regulären Zeichenketten-Literalen vergleichen:
`abc`
// same as "abc"
"\"" // regular string literal with 1 character: a double quote
// same as `"` a raw string literal with 1 character: a double quote
`\n
` // raw string literal with 3 character: a backslash, an 'n', and a newline
// same as "\\n\n" a regular string literal with 3 characters: a backslash, an 'n', and a newline
"\t\n" // regular string literal with 2 characters: a tab and a newline
`\t\n`// raw string literal with 4 characters: two backslashes, a 't', and an 'n'