Go
変数
スコープ
シャドウイング

25行で分かれgo言語における変数のスコープとシャドウイング

package main

import (
    "fmt"
)

var i = 0

func main() {
    fmt.Println(i) // 0
    i := 1
    fmt.Println(i) // 1
    {
        fmt.Println(i) // 1
        i := 2
        fmt.Println(i) // 2
        for i := 3; i < 4; i++ {
            fmt.Println(i) // 3
            i := 4
            fmt.Println(i) // 4
            if i := i + 1; i == 5 {
                fmt.Println(i) // 5
                i := 6
                fmt.Println(i) // 6
            }
            fmt.Println(i) // 4
        }
        fmt.Println(i) // 2
    }
    fmt.Println(i) // 1
}

のっけからコードをベタ張りするスタイル。グローバル変数の定義からメイン関数の終わりまででぴったり25行です。

  1. グローバル
  2. メイン関数
  3. ブロック
  4. for文
  5. for文の1ループ
  6. if文
  7. if文の一つの場合

これでわかるつもりで書いていますがわからない場合はコメントください。