Goの最も便利な機能の1つは、短い変数宣言のための:=構文です。これにより、1行で変数を宣言して初期化できるため、コードをより簡潔で読みやすくすることができます。ほとんどの場合、この省略記法を優先すべき理由を探っていきましょう。

:=を使う理由

シンプルさと可読性: :=構文は、宣言と初期化の両方を1行で組み合わせることで、変数宣言を簡素化します。これにより、定型コードが削減され、新しい変数が導入されていることがすぐに明確になります。


型推論: :=を使用すると、変数の型を明示的に指定する必要はありません。Goは代入された値に基づいて型を自動的に推論するため、明確さを犠牲にすることなく冗長性を減らすことができます。

count := 42   // countは自動的にint型になります
name := "Go"  // nameは自動的にstring型になります


ブロックスコープ: :=で宣言された変数は、宣言されたブロックのスコープを持ちます。これにより、変数の再利用や意図しないグローバル状態の変更に関連する問題を回避するのに役立ちます。

:=を使わない場合

この省略記法は強力ですが、避けるべき場合があります。

パッケージレベルの変数: パッケージレベルでは、:=は関数内でのみ有効なため、varキーワードを使用して変数を宣言する必要があります。

var globalCount int // パッケージレベルで宣言


値の再代入: 同じスコープ内で既存の変数に値を再代入する場合は、:=ではなく標準の代入演算子=を使用してください。

count = 50 // 新しい値を再代入

:=の動作例

:=がどのようにコードを効率化できるかを示す簡単な例を以下に示します。

package main

import "fmt"

func main() {
    // :=で複数の変数を宣言して初期化
    message := "Hello, Go!"
    count := 10
    isReady := true

    fmt.Println(message, count, isReady)
}


この例では、:=を使用して異なる型の3つの変数を宣言および初期化することで、コードを簡潔で読みやすくしています。