コース一覧
/
Go 入門
/

変数とデータ型

短縮変数宣言を使おう

Go では := を使って、型を省略した変数宣言ができます。var との使い分けと、:= の制約を学びます。

:= による短縮変数宣言とは

前のレッスンでは、var を使って変数を宣言しました。

package main import "fmt" func main() { var message string = "Hello" fmt.Println(message) // => Hello }

Go には、もっと短く変数を宣言する方法があります。それが := を使った短縮変数宣言です。

package main import "fmt" func main() { message := "Hello" fmt.Println(message) // => Hello }

:= を使うと、var と型の指定を省略して変数を宣言できます。基本構文は次のとおりです。

変数名 := 値

右辺の値から Go が型を自動的に判断してくれるため、型を書く必要がありません。これを型推論と呼びます。例えば、"Hello" を代入すると string 型、42 を代入すると int 型になります。

package main import "fmt" func main() { name := "Go" // string 型と判断される year := 2009 // int 型と判断される fmt.Println(name) // => Go fmt.Println(year) // => 2009 }

string(文字列)や int(整数)などのデータ型については、後続のレッスンで詳しく学びます。

var と := の使い分け

:= は便利ですが、関数の中でのみ使えます。 関数の外で := を使うとコンパイルエラーになります。

package main import "fmt" // 関数の外では var を使う var appName string = "Codize" func main() { // 関数の中では := が使える message := "ようこそ" fmt.Println(appName) // => Codize fmt.Println(message) // => ようこそ }

関数の中で値とともに変数を宣言する場合は、:= を使うのが一般的です。一方、var は次のような場面で使います。

  • 関数の外で変数を宣言するとき
  • ゼロ値で初期化したいとき(前のレッスンで学んだように、var name string と書くと空文字列になります)

:= と再代入の違い

:= は「変数の宣言」と「値の代入」を同時に行います。そのため、同じ変数に対して := を2回使うとコンパイルエラーになります。

package main func main() { x := 10 x := 20 // 同じ変数を再度宣言しようとしている } // => コンパイルエラー: no new variables on left side of :=

値を変更したい場合は、= を使って再代入します。

package main import "fmt" func main() { x := 10 // := で宣言と代入 fmt.Println(x) // => 10 x = 20 // = で再代入(宣言済みなので var や := は不要) fmt.Println(x) // => 20 }

:=最初の1回だけ使い、2回目以降の値の変更には = を使うと覚えておきましょう。

まとめ

  • :=var と型の指定を省略して変数を宣言できる
  • Go が値から型を自動的に判断する(型推論)
  • := は関数の中でのみ使える(関数の外では var を使う)
  • 同じ変数に := は2回使えない(再代入は = を使う)