【Go言語】for文のあれこれ

Go言語のfor文のあれこれ

Goでfor文を書いてみる

オーソドックスなfor文

  • Goのfor文は、条件式の部分に()をつけない
  • Go言語での繰り返し処理は、for文のみで、while文は存在しない
package main

import "fmt"

func main() {

    fmt.Println("iのループの結果は")
    for i := 0; i <= 5; i++ {
        fmt.Println(i)
    }
}

/*出力結果
iのループの結果は
0
1
2
3
4
5

*/

While文をfor文で再現

package main

import "fmt"

func main() {

    fmt.Println("jのループの結果は")
    j := 0
    for j < 5 {
        fmt.Println(j)
        j++
    }
}

/*出力結果
jのループの結果は
0
1
2
3
4
*/

すべての条件を省略すると無限ループ

  • でも、ずっとループされては困るので、break文(後述)でループを終わらせる
package main

import "fmt"

func main() {

    k := 0
    fmt.Println("kのループの結果は")
    for {
        fmt.Println(k)
        k++
        if k == 10 {break}
    }
}

/*出力結果
kのループの結果は
0
1
2
3
4
5
6
7
8
9
*/

break文

  • break文以降の繰り返し処理が行われなくなる(ループを抜ける)
package main

import "fmt"

func main() {
//5以降の処理が行われなくなる
    fmt.Println("lのループの結果は")
    for l := 0; l <= 7; l++ {
        if l == 5 {
            break
        }
        fmt.Println(l)
    }
}

/*出力結果
lのループの結果は
0
1
2
3
4
*/

continue文

  • 残り処理をスキップして次の繰り返しを始める
package main

import "fmt"

func main() {
    //3の倍数だけ表示
    fmt.Println("mのループの結果は")
    for m := 1; m <= 10; m++ {
        if m%3 != 0 {
            continue
        }
        fmt.Println(m)
    }

}

/*出力結果
mのループの結果は
3
6
9
*/

参考文献

松尾愛賀(2016)『スターティングGo言語』株式会社 翔泳社