golangのrangeについて気づいたこと
小ネタですがgolangのrangeについて気づいたことがあったので
書きたいと思います。
golangで配列を回すときなどに使用するrangeですが
配列が空だと、そもそも処理がrangeの中に入らないんですね。
- 配列が空の時
package main import ( "fmt" ) func main() { var is []int = []int{} for _, i := range is { fmt.Println("i=", i) } }
- 結果
# 処理がrangeの中に入らないので何も表示されない
https://play.golang.org/p/S04Sr-YPPQ
- 配列の中に値が入っている時
package main import ( "fmt" ) func main() { var is []int = []int{1,2,3} for _, i := range is { fmt.Println("i=", i) } }
- 結果
i= 1 i= 2 i= 3
https://play.golang.org/p/WddrbOWkE6
rangeに中に値が入っている時だけ処理がrangeの中に入ってくれるようです。
てっきりnilの値を取ろうとして落ちるみたいな挙動になるかと思っていました。
おわり!!