Go 言語の変数宣言
1. Goの変数型 (Go Variable Types)
変数(Variables)は、データを保存するためのコンテナです。 Goには、以下のような様々なタイプ(型)の変数が存在します。
- int: 123 や -123 などの整数を保存します。
- float32: 19.99 や -19.99 などの小数を持つ浮動小数点を保存します。
- string: "Hello World" などのテキストを保存します。文字列(String)の値はダブルクォーテーションで囲みます。
- bool:
trueまたはfalseの2つの状態を持つ値を保存します。
2. 変数の宣言(作成)
Goで変数を宣言するには、主に2つの方法があります。
2.1. varキーワードを使用する方法
var キーワードに続けて、変数名と型を指定します。
構文(Syntax)
var variablename type = value注意: 必ず「型(type)」か「値(value)」のどちらか一方(または両方)を指定する必要があります。
2.2. := 記号(短縮宣言)を使用する方法
:= 記号に続けて、変数の値を指定します。
構文(Syntax)
variablename := value注意: この場合、変数の型は値からインファレンス(型推論)されます。つまり、コンパイラが値に基づいて変数の型を決定します。
注意::= を使用する場合、値を代入せずに宣言することはできません。
3. 初期値を持つ変数宣言
変数の値が最初からわかっている場合は、1行で宣言と代入を行うことができます。
コード例:
package main
import ("fmt")
func main() {
var student1 string = "ジョン" // 型は string
var student2 = "ジェーン" // 型は推論される
x := 2 // 型は推論される
fmt.Println(student1)
fmt.Println(student2)
fmt.Println(x)
} 注意:student2 と x の型は、それぞれの値から型推論されます。
4. 初期値を持たない変数宣言
Goでは、すべての変数が初期化されます。そのため、初期値を指定せずに変数を宣言した場合、その型のデフォルト値(ゼロ値)が設定されます。
コード例:
package main
import ("fmt")
func main() {
var a string
var b int
var c bool
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}解説:
この例には3つの変数があります。
- a
- b
- c
これらの変数は宣言されていますが、初期値は代入されていません。コードを実行すると、それぞれの型のデフォルト値が表示されます。
- a は
""(空の文字列) - b は
0 - c は
false
5. 宣言後の値の代入
変数を宣言した後に値を代入することも可能です。これは、初期段階で値が決まっていない場合に便利です。
コード例:
package main
import ("fmt")
func main() {
var student1 string
student1 = "ジョン"
fmt.Println(student1)
} 注意::= を使用して、値を代入せずに宣言することはできません。
6. var と := の違い
var と := には、いくつかの細かな違いがあります。
| 特徴 | var | := |
|---|---|---|
| 使用範囲 | 関数の内部および外部で使用可能 | 関数の内部のみで使用可能 |
| 宣言と代入 | 宣言と代入を別々に行うことができる | 宣言と代入を別々に行うことはできない(同じ行で行う必要がある) |
7. 変数宣言の具体例
7.1. 関数外での var キーワードの使用
以下の例は、関数の外で var キーワードを使用して変数を宣言する方法を示しています。
コード例:
package main
import ("fmt")
var a int
var b int = 2
var c = 3
func main() {
a = 1
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}7.2. 関数外での短縮宣言(エラー例)
:= は関数の外で使用するとエラーになります。
コード例:
package main
import ("fmt")
a := 1 // 関数外での短縮宣言は不可
func main() {
fmt.Println(a)
}実行結果:
./prog.go:5:1: syntax error: non-declaration statement outside function body