Code Fix

上級名前付き戻り値が内側のブロックで:=によりシャドーイングされる › パターン4

名前付き戻り値が内側のブロックで:=によりシャドーイングされる

名前付き戻り値の変数と同じ名前をif文などの内側のブロックで:=を使って再宣言すると、それは別の新しいローカル変数になります。

 1  package main
 2  
 3  import "fmt"
 4  
 5  func build(flag bool) (count int) {
 6  	if flag {
 7  		______________________
                 ^
 8  	}
 9  	return
10  }
11  
12  func main() {
13  	fmt.Println(build(true))
14  }
出力: 0

空欄を埋めて実行を通す

広告
広告スロット(未設定)

名前付き戻り値が内側のブロックで:=によりシャドーイングされる

裸のreturnではブロック外の元の名前付き戻り値の値が返され、内側で設定した値は反映されません。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)