👨‍💻

「誰でも爆速で理解できる!Go のルーンリテラル10個のエスケープシーケンスまとめ」

に公開

はじめに

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 におけるテキスト出力やバイナリデータ生成の制御がより正確かつ直感的に行えます。

Discussion