Goの変数宣言

スポンサーリンク

はじめに

Goでの変数宣言の方法と、その使い所についてざっくりまとめました。

var

初期値を指定した変数宣言は下記の通りです。型を省略するとデフォルトの型が選ばれます。

var [変数名] [型] = [初期値]
var [変数名] = [初期値]
var n int = 100
var n = 100

初期値を指定しないと、ゼロ値で初期化された変数を宣言できます。

var [変数名] [型]
var n int

複数の変数をまとめて宣言することも可能です。

var (
    n int
    a string = "Hello"
    b        = 10
    c int    = 20
)

:=

関数内では、:=が使えます。宣言方法は下記の通りです。この場合、型は推定されます。

[変数名] := [初期値]
n := 100

複数宣言も可能です。

n, m := 100, "Hello"

また、宣言だけでなく、左辺に新しい変数が1つ以上あれば既存の変数への代入も可能です。

n := 100
n, m := 200, 300

使い分け

var:=の使い分けは意図を明確にできる形式を選択する必要があります。

下記のように使い分けることができます。

宣言方法使い所
var
  • パッケージレベルの変数宣言したいとき

関数内で

  • ゼロ値に初期化したいとき
  • 型が指定されていないリテラルを代入し、デフォルトの型とは異なる型を指定したいとき
  • 新しく変数を宣言したことを明示したいとき
:=
  • 関数内で変数宣言したいとき(varの使い所以外で)

実際に使われている例として、Kubernetesのソースコードを抜粋してみました。

var:

kubernetes/pkg/controlplane/instance.go at master · kubernetes/kubernetes
Production-GradeContainerSchedulingandManagement-kubernetes/pkg/controlplane/instance.goatmaster·kubernetes/kubernetes
kubernetes/pkg/controlplane/controller/clusterauthenticationtrust/cluster_authentication_trust_controller.go at master · kubernetes/kubernetes
Production-GradeContainerSchedulingandManagement-kubernetes/pkg/controlplane/controller/clusterauthenticationtrust/cluster_authentication_trust_controller.goatm...
kubernetes/pkg/controlplane/controller/clusterauthenticationtrust/cluster_authentication_trust_controller.go at master · kubernetes/kubernetes
Production-GradeContainerSchedulingandManagement-kubernetes/pkg/controlplane/controller/clusterauthenticationtrust/cluster_authentication_trust_controller.goatm...

:=:

kubernetes/pkg/controlplane/controller.go at master · kubernetes/kubernetes
Production-GradeContainerSchedulingandManagement-kubernetes/pkg/controlplane/controller.goatmaster·kubernetes/kubernetes

参考

タイトルとURLをコピーしました