if文の中で定義した変数の使い方に注意
if文の中で、条件分岐に合わせて変数を定義したい時ってありますよね?
例えばこんな感じ↓
if (条件式) {
// 変数定義
} else {
// 変数定義
}
しかし、これをGolangでやろうとすると、以下のようにエラーが出てしまいます。
if test == "aaa" {
sample := 1 // error: sample declared but not used
} else {
sample := 0 // error: sample declared but not used
}
fmt.Println(sample)
なぜかというと、Golangではif文の中で定義した変数はそのif文の中でしか使えないからです。
そのため、上記のようにif文の中で変数sampleを定義してますが、if文の外にあるフォーマット関数でその変数を出力することはできません。
解決策
もし条件分岐によって変数の内容を変えたい場合は、if文の外で変数を定義(初期化)してあげればOKです。
var sample int // 変数定義
if test == "aaa" {
sample = 1
} else {
sample = 0
}
fmt.Println(sample)
上記のように、if文の中では予め定義してある変数に値を代入するだけです。
動的型付け言語出身の人にとっては、少し慣れないポイントかもしれないですね。