上級 › 名前付き戻り値が内側のブロックで:=によりシャドーイングされる › パターン3
名前付き戻り値が内側のブロックで:=によりシャドーイングされる
名前付き戻り値の変数と同じ名前をif文などの内側のブロックで:=を使って再宣言すると、それは別の新しいローカル変数になります。
1 package main 2 3 import "fmt" 4 5 func process(flag bool) (value int) { 6 if flag { 7 ______________________ ^ 8 } 9 return 10 } 11 12 func main() { 13 fmt.Println(process(true)) 14 }
出力: 0
空欄を埋めて実行を通す
裸のreturnはブロック外の名前付き戻り値の現在値を返すため、内側だけで完結する:=での再宣言は反映されません。
次の問題