はじめに
Go 言語では、単一の Unicode コードポイントを表す整数定数を ルーンリテラル(rune literal)として扱います。ルーンリテラルはシングルクォートで囲まれた 1 文字またはエスケープシーケンスで記述し、内部的には int32
(別名 rune
)型として扱われます。
本記事では、公式仕様書「Rune literals」に基づき、代表的なエスケープシーケンスの一覧と、それらを使った出力例を紹介します。
一覧表
以下の表は、Go のルーンリテラルおよび文字列リテラルで利用できる主要なエスケープシーケンスをまとめたものです。各行には対応する Unicode コードポイントと英語名、そして簡単な説明を付しています。
(ルーンリテラルでは \'
が有効、\"
は文字列リテラルでのみ有効です)
リテラル | Unicode | 英語名 | 説明 |
---|---|---|---|
\a |
U+0007 | alert or bell | 警告音(ベル)を鳴らす |
\b |
U+0008 | backspace | カーソルを 1 文字分戻して削除する |
\f |
U+000C | form feed | 改頁コード(多くの端末では空白扱い) |
\n |
U+000A | line feed or newline | 改行 |
\r |
U+000D | carriage return | 行頭へ戻る |
\t |
U+0009 | horizontal tab | 水平タブ |
\v |
U+000B | vertical tab | 垂直タブ(多くの端末では空白扱い) |
\\ |
U+005C | backslash | バックスラッシュ文字 \ を出力 |
\' |
U+0027 | single quote | シングルクォート文字 ' を出力(ルーンリテラル内で有効) |
\" |
U+0022 | double quote | ダブルクォート文字 " を出力(文字列リテラル内で有効) |
サンプルコード
以下のサンプルプログラムは、fmt.Print
で各エスケープシーケンスの挙動を確認する例です。出力時に制御文字がどのように作用するかご覧ください。
package main
import "fmt"
func main() {
// \a : 警告音(ベル)
fmt.Print("alert (\\a): \a\n")
// \b : バックスペース
fmt.Print("backspace (\\b): ABC\bD\n") // ⇒ 「ABD」
// \f : フォームフィード(多くの端末では空白扱い)
fmt.Print("form feed (\\f): Hello\fWorld\n")
// \n : 改行
fmt.Print("newline (\\n): Line1\nLine2\n")
// \r : キャリッジリターン
fmt.Print("carriage return (\\r): 12345\rAB\n") // ⇒ 「AB345」
// \t : 水平タブ
fmt.Print("horizontal tab (\\t): Col1\tCol2\n")
// \v : 垂直タブ(多くの端末では空白扱い)
fmt.Print("vertical tab (\\v): Hello\vWorld\n")
// \\ : バックスラッシュ文字
fmt.Print("backslash (\\\\): \\\n")
// \' : シングルクォート文字(ルーンリテラル内で有効)
fmt.Print("single quote (\\'): '\n")
// \" : ダブルクォート文字(文字列リテラル内で有効)
fmt.Print("double quote (\\\"): \"\n")
}
実行結果
上記コードを実行した際の端末出力例です。
(制御文字の挙動は利用環境によって異なる場合があります)
alert (\a):
backspace (\b): ABD
form feed (\f): Hello
World
newline (\n): Line1
Line2
ABrriage return (\r): 12345
horizontal tab (\t): Col1 Col2
vertical tab (\v): Hello
World
backslash (\\): \
single quote (\'): '
double quote (\"): "
まとめ
- ルーンリテラルはシングルクォートで囲み、単一の Unicode コードポイントを表現する。
- 代表的なエスケープシーケンスは公式仕様書「Rune literals」で定義されている。
- コード例と実行結果を通じて、ベル音、改行、タブ、バックスペースなどの制御文字の挙動を確認できる。
これらを活用することで、Go におけるテキスト出力やバイナリデータ生成の制御がより正確かつ直感的に行えます。