The Three Go Landmines.ja.markdown Goでよくやってしまうミスが3つあります。 私はそのミスを、分かりやすいように簡略した書き方ではなく、巷でよく見かける書き方のままここで説明します。 3つのミスの全てが、私の知る限り少なくとも1回づつ、Kubernetesの過去のコードレビューにありました。 1: ループ変数がループ外のスコープになっている この各行はいったい何を行っているのでしょうか。想像してから下へスクロールしてください。 func print(pi *int) { fmt.Println(*pi) } for i := 0; i < 10; i++ { defer fmt.Println(i) defer func(){ fmt.Println(i) }() defer func(i int){ fmt.Println(i) }(i) defer
![Go言語の地雷(原題: Golang landmines)](https://cdn-ak-scissors.b.st-hatena.com/image/square/1ef26f6cb4349557952890dbe3e567f7f98dc151/height=288;version=1;width=512/https%3A%2F%2Fgithub.githubassets.com%2Fassets%2Fgist-og-image-54fd7dc0713e.png)