宣言の仕方
varを使う方法と:=を使う方法があります。
func foo() { xi := 2 xf64 := 1.8 xs := "test2" xt, sf := true, false fmt.Println(xi, xf64, xs, xt, sf) }
:=で記述すると関数外で宣言する事ができません。
また、必ず値を代入する必要があります。
さらに、代入した値によって、その変数の型が自動的に決められてしまうので、
float64の値を代入するけれども、変数の型としてはfloat32にしたい、といったことはできません。
func main() { var ( i float64 = 1 f64 = 1.2 s = "test" t, f = true, false g bool ) fmt.Println(i, f64, s, t, f, g) foo() }
varで記述すると、値の代入は必ずしも必要ではなく、
数値型の場合、代入した値とは異なる型指定をする事もできます。
宣言時に代入する値と異なる型でなければ、型宣言は不要なようです。
上記main関数内で宣言したiは、int型の値を代入していますが、型はfloat64としています。
また、varを用いた場合、関数の外で宣言する事ができます。
値の変更
宣言した変数に対して値を変更する場合には、
次のように=だけで記述します。
func main() { var ( i float64 = 1 ) xi := 2 i = 3.4 xi = 1 }
なお、宣言した型に受けつけられない型の値を代入しようとするとエラーになります。
型の調べ方
次のように調べる事ができます。
func main() { var ( i float64 = 1 ) xi := 2 fmt.Printf("%T\n", i) fmt.Printf("%T\n", xi) }
第1引数末尾の\nは改行コードです。Printfでは自動的に改行されません。