2
0

More than 3 years have passed since last update.

Goのfor文のまわりの変数スコープ

Posted at

Goでの変数のスコープについてはすでにあちこちで語られているとは思いますが、再確認。

以下のプログラムは i を何度も定義していますが動作します。

package main

import (
    "log"
)

func main() {
    log.SetFlags(log.Lshortfile)

    i := 123
    log.Println(i)
    for i := 0; i < 3; i++ {
        log.Println(i)
        i := 9999
        log.Println(i)
    }
    log.Println(i)
}

playground での結果

prog.go:11: 123
prog.go:13: 0
prog.go:15: 9999
prog.go:13: 1
prog.go:15: 9999
prog.go:13: 2
prog.go:15: 9999
prog.go:17: 123

こちらで解説されているものもほぼ同じですね。
https://dave.cheney.net/2016/12/15/declaration-scopes-in-go

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0