はじめに
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 |
関数内で
|
:= |
|
実際に使われている例として、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