Go言語にはforeachはある?配列やスライス、マップのループ処理はforを使おう

Go言語にはPHPにあるような foreach ループはありません。

ただし、Goにはスライス、配列、マップを反復処理するための for ループが用意されています。

スライスの要素を反復処理するために for ループを使用したGo言語のサンプルコードを示します。

package main

import "fmt"

func main() {
    numbers := []int{1, 2, 3, 4, 5}

    for index, value := range numbers {
        fmt.Println(index, value)
    }
}

読めば分かるとは思いますが解説を、、。

この例ではfor ループが range キーワードを使って numbers スライスを反復処理しています。

range キーワードは各ループで2つの値を返します。現在の要素のインデックスと現在の要素の値です。

これらの値は、それぞれ indexvalue 変数に代入されます。ループの本体は、 indexvalue 変数を各繰り返し表示します。

なお、indexvalue 変数の順序が重要であることに注意してください。スライスの値のみを反復処理する場合は、インデックスを無視するために _(ブランク識別子)を使用することができます。

package main

import "fmt"

func main() {
    numbers := []int{1, 2, 3, 4, 5}

    for _, value := range numbers {
        fmt.Println(value)
    }
}

この例では、index 変数がブランク識別子(_)で置き換えられ、無視されます。ループの本体では value 変数のみを使用します。