🍕

【Go】変数宣言の短縮形式(:=)とvarはどちらを使うべきなのか?

2022/05/31に公開

前置き

業務でGoを使用することになり、Go言語を学習している際に変数の定義方法に短縮形式(:=)の記法とvar(variableの略)の記法が現れたので、どちらを使用するのがベストプラクティスなのかと疑問に思い調べてみました。

結論

いきなり結論ですが、基本的には『短縮記法(:=)』で書くほうがいいと思います。
ただ、varで宣言した方がいい場合や、行う必要がある場面もあります。
では、両方の違いを見てみましょう。

varと短縮形式記法のちがい


// 短縮形式での宣言
// 値を設定しつつ、右辺から型がわかる場合
one := 1


// varでの宣言
var one int
one = 1
// varでも、変数宣言毎に初期化子(initializer)を与えることができます
var one int8 = 2

// 初期化子が与えられている場合、型を省略できます。
// その変数は初期化子が持つ型になります。
var three = 3

varは指定しなければゼロ値になりますが、短縮記法は右辺の値が代入されると同時に型も定めることができます。
varでも短縮形式のように初期化子を与えることができるものの、ゼロ値ではなく値を入れたことを明示的に行いたい場合は、短縮記法で書いた方がいいと思いました。

ちなみに関数の外の、パッケージ変数の場合は短縮記法が使用できないので、強制的にvarを使うことになります。

まとめ

varよりも短縮記法の方が短くかけるものの、短縮記法では、型か関数か区別がつきにくいこともあるため、型であることが一目瞭然のvarで書きたい人もいると思います。
そこはプロジェクトによって使い分けるといい思います。(こんなこと言うと元も子もないですが、、笑)
私的には、Goはシンプルに書けることが利点でもあるので、今後は短縮記法を推していきたいです。

参考記事

Discussion