技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

変数【Go】

宣言の仕方

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では自動的に改行されません。