変数は、どのプログラミング言語でも必要不可欠な存在です。
本記事では、Golangで変数を宣言するための省略構文を解説します。
Golangにおける変数宣言
変数の宣言には複数の方法があります。
変数宣言の省略構文では、変数の宣言と初期化を同時に行うことができます。この方法はコードを減らすだけでなく、シンプルにコードを書くことが可能です。
まず、通常の構文で変数を宣言する方法は以下のとおりです。
var 変数名 変数の型 // 変数を定義
変数名 = 値 // 変数に値を代入
省略構文は、上記2つのステップを1つに統合したものです。
変数名 := 最初に代入する値
ここで出てくる(:=)の演算子は、省略宣言の演算子です。
Golangにおける型推論
省略宣言の構文で変数を宣言した後、変数は代入された値からデータ型を取得します。
そのため、他のデータ型を代入しようとするとエラーになります。
package main
import (
"fmt"
)
func main() {
i := 98 // int型の変数を定義
fmt.Println(i) // 98
i = "Hello" // 変数iはint型だから、string型の"Hello"を代入しようとするとエラーになる
}
変数の型は、宣言後にGolangのコンパイラによって推論されるため、新しい型の値を再代入することはできません。
複数の変数を宣言する
変数宣言の省略記法を使うと、複数の変数を宣言することもできます。
複数の変数を宣言するには、演算子の両側で対応する順番を同じにする必要があります。
以下は複数の変数を宣言する時の書き方です。
変数1, 変数2, 変数3, ... := 値1, 値2, 値3
関数の宣言
関数も変数と同様に短い構文で宣言することができます。
また、Golangは関数のサポートが充実しており、無名関数で書くことができます。
以下のコードは、省略構文を使って関数を宣言する方法です。
package main
import (
"fmt"
)
func main() {
// 関数定義
f := func() {
fmt.Println("Hello, World")
}
// 関数の使用
f() // Hello, World
}
省略宣言のメリットとは
変数を短く宣言することには、いくつかのメリットがあります。
- コードを短く簡潔にすることができる
- 間違った型を変数に代入することもなくなる
分かりやすいところでいくと、上記かなと思います。
またGolangでは、関数が複数の値を返すことがあり、省略構文によって複数の変数への代入を簡単に行うことができます。
それによってエラー処理がすごくシンプルにできるということもメリットに挙げられますね。
省略宣言のデメリットとは
省略宣言にはデメリットもあります。
- グローバルスコープでは使用できない
- 関数の中でなければならない
- 関数スコープの外で宣言する場合は、var, const, func を適宜使用しなければならない
等ですね。