エンジニアはこわくない

雑記とかエンジニアっぽい内容を好きなように書く場所

golangのrangeについて気づいたこと


スポンサーリンク

f:id:tsujitaku50:20170224131252j:plain

小ネタですが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の値を取ろうとして落ちるみたいな挙動になるかと思っていました。

おわり!!