概要
If with a short statement.
Go 公式の Tour 22番目の項目について。
http://go-tour-jp.appspot.com/#22
Go は、 if 文の宣言に任意のステートメントの実行を含めることが出来ます。
例えば、ブロック内のみで利用する変数の初期化など。
サンプルコード
package main import ( "fmt" "math/rand" "time" "strconv" ) func main() { rand.Seed(time.Now().UnixNano()) randoms := []int{rand.Intn(10), rand.Intn(10), rand.Intn(10)} for _, n := range randoms { if isEven := (n % 2 == 0) ; isEven { fmt.Printf("isEven = %s\n", strconv.FormatBool(isEven)) } // スコープ外のため、エラーが発生する「undefined: isEven」 // fmt.Println(isEven) } }
出力
3回実行してみた。
$ go run if_variable.go isEven = true $ go run if_variable.go isEven = true isEven = true isEven = true $ go run if_variable.go isEven = true isEven = true