変数・定数・リテラル


変数

Go言語では、var 変数名 型名という書き方で変数の定義を行います。 定義した変数には=演算子を使用して自由に値を代入することができます。

var name string
name = "Mr. Go"
fmt.Println("Hello,", name)

また、宣言と初期化を同時に行う場合は、型名を省略することができます。

var name = "Mr. Go"
fmt.Println("Hello,", name)

さらに、関数内に限り:=演算子を使用して代入を行うことで、varキーワードも省略が可能です。

name := "Mr. Go"
fmt.Println("Hello,", name)

定数

constキーワードを使用することで、定数を定義することができます。定数は定義と同時に必ず初期化を行います。

const title = "Go言語入門"
fmt.Println(title);

変数と違い、定数の定義後に値を代入することはできません。

なお、定数の定義は関数内・関数外問わず行うことができます。関数内で定義した場合、その定数は定義した関数内でのみ有効となります。

リテラル

Go言語では5種類のリテラルを使用することができます。

整数リテラル

多くの言語と同様に、Go言語では10進数、8進数、16進数の整数リテラルを使用することができます。 8進数の場合は頭に0を、16進数の場合は頭に0xまたは0Xを付けます。

1234
093    // 8進数の93
0xA3   // 16進数のA3(「0XA3」と書いても良い)

浮動小数点数リテラル

浮動小数点型は10進数のみ使用できます。 小数部・整数部のいずれか一方のみ、0の場合は省略することができます。

また、指数表記を利用することもできます。

3.1415
.25      // 0.25
12.      // 12.0
1.25e-3  // 0.00125の指数表記

虚数リテラル

Go言語には複素数型が存在するため、虚数リテラルが用意されています。 虚数リテラルは、10進数の整数または浮動小数点数の後ろにiを付けることで表現します。

なお、1iを表現するのに1を省略してiとすることはできません。

2i
3.1415i
1.25e-3i    // 指数表記も使用可能

ルーンリテラル

Unicodeのコードポイントを表現する整数のことをルーン(Rune)と呼びます。ルーンリテラルはルーン1つを表現するリテラルです。

'a'
'あ'     // Unicodeであるためマルチバイト文字列もルーン1つで表現可能
'\n'     // エスケープシーケンスを使用できる
'\u12AB' // コードポイントを直接記述可能

文字列リテラル

文字列リテラルには2種類の表現方法があります。

raw文字列リテラル

バッククォートで囲まれた文字列をraw文字列リテラルと呼びます。

raw文字列リテラル内ではいかなるエスケープシーケンス・コードポイントも評価されず、書かれたそのままを文字列として扱います。 制御文字を含めることが可能で、改行もそのまま扱われます。

ただし、リテラル内でバッククォートを使用することはできません。

`abc`
`\n`    // 改行ではなく\とnの二文字として扱われる。
`ab     
cd`     // 前の行と合わせて、改行を含む1つの文字列として扱われる。

interpreted文字列リテラル

ダブルクォートで囲まれた文字列をinterpreted文字列リテラルと呼びます。

interpreted文字列リテラル内ではエスケープシーケンスや、Unicodeコードポイントが評価されます。

"abc"
"ab\ncd"              // abとcdの間に改行が挿入される
"\u3042\u3044\u3046"  // 「あいう」のコードポイント表記