Goのstringは、必ずしも文字を表すとは限らない不変のバイト列です。
文字列リテラルは、二重引用符で囲んで定義します。
const name = "Jane"
文字列は、+演算子で連結できます。
"Jane" + " " + "Austen"
// => "Jane Austen"
一部の特殊文字は、文字列内で先頭にバックスラッシュを付けてエスケープする必要があります。たとえば、タブを表す\tや、改行を表す\nです。
"How is the weather today?\nIt's sunny"
// =>
// How is the weather today?
// It's sunny
stringsパッケージには、文字列を操作するための便利な関数がたくさんあります。
文字列関数について詳しくは、stringsパッケージのドキュメントをご覧ください。
いくつか例を挙げます。
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"
前述のとおり、一部の特殊文字は先頭にバックスラッシュを付けてエスケープする必要があります。 以下は、それらの特殊文字の詳細な一覧です。
| 値 | 説明 |
|---|---|
\a |
警報またはベル |
\b |
バックスペース |
\\ |
バックスラッシュ |
\t |
水平タブ |
\n |
ラインフィードまたは改行 |
\f |
フォームフィード |
\r |
キャリッジリターン |
\v |
垂直タブ |
\' |
シングルクォート |
\" |
ダブルクォート |
fmt.Println("Joe\nWilliam\nJack\nAverell")
// Output:
// Joe
// William
// Jack
// Averell
生文字列リテラルは、二重引用符の代わりにバッククォート(`)を区切り文字として使用し、その中のすべての文字が文字どおりに解釈されます。つまり、文字や改行をエスケープする必要はありません。
これは複数行にわたる文字列の例です。
const daltons = `Joe
William
Jack
Averell`
この文字列は複数の行にまたがっています。
具体的には、3つの\nがあります。
しかし、これは生文字列リテラルなので、文字列内に\nを明示的に書く必要はありません。
改行は文字どおりに解釈されます。
生文字列リテラルと通常の文字列リテラルを比較した他の例をいくつか示します。
`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'