ほげにっき

hogedigoの日記

変数のスコープがちょっと不思議

package main

import (
	"fmt"
)

func main() {
	if a := 1; a==1 {
		if a:=2; a==2 {
			fmt.Println(a);
			a :=3
			fmt.Println(a);
		}
		fmt.Println(a);
	}
}

↓結果

2
3
1

スコープを入れ子にすると外側のスコープで宣言済の変数名でも宣言出来るのか・・・
それにしもif a:=2...のブロック内でまたa:=3出来るのもちょっと不思議。。