[Golang] for文

2021-10-13 hit count image

Golangで唯一のループであるfor文を使う方法について説明します。

概要

今回のブログポストではGolangでfor文を使う方法について説明します。このブログポストで紹介するコードは次のリンクで確認できます。

for文

Golangでは1つのループ文だけ存在して、for文がその役割をしております。Golangではwhile分とようなループ文が存在してないですが、for文でそれと同じ機能を実行することはできます。

Golangでは次のようにfor文を定義して使います。

for 初期化文; 条件文; 後処理 {
  // 条件文がtrueになると実行される
  コードブロック
}

また、次のように初期化文を省略することができます。

for ; 条件文; 後処理 {
  ...
}

逆に、次のように後処理を省略することもできます。

for 初期化文 ; 条件文;  {
  ...
}

もちろん、初期化文と後処理を同時に省略することもできます。

for ; 条件文;  {
  ...
}

これを次のようにもっと簡単に定義して使うこともできます。

for 条件文 {
  ...
}

これを確認するためmain.goファイルを作って、次のように修正します。

package main

import "fmt"

func main() {
  for i := 0; i < 10; i++ {
    fmt.Println(i)
  }

  i := 0
  for ; i < 10; i++ {
    fmt.Println(i)
  }

  for i := 0; i < 10; {
    fmt.Println(i)
    i++
  }

  i = 0
  for i < 10 {
    fmt.Println(i)
    i++
  }

  i = 0
  for i < 10 {
    fmt.Println(i)
    i++
  }
}

continueとbreak

Golangでもループ中でcontinuebreakを使ってループをコントロールすることができます。

  • continue: 後処理に移動
  • break: ループを終了

これを確認するためmain.goファイルを次のように修正します。

package main

import "fmt"

func main() {
  for i := 0; i < 10; i++ {
    if i == 3 {
      continue
    }
    if i == 6 {
      break
    }
    fmt.Println(i)
  }
}

プログラムを実行すると次のようにi3の時、後処理に移動して、画面にiが表示されないことが確認できます。また、i6の時、ループが終了されることが確認できます。

# go run main.go
0
1
2
4
5

無限ループ

Golangではfor文を使って無限ループを実装することができます。for文で次のように初期化文と後処理を省略して、条件にtrueを設定すると無限ループになります。

for true {
  コードブロック
}

これを次のように簡単に表現することができます。

for {
  コードブロック
}

無限ループを確認するため、次のようにmain.goファイルを修正します。

package main

import (
  "fmt"
  "time"
)

func main() {
  i := 1
  for {
    time.Sleep(time.Second)
    fmt.Println(i)
    i ++
  }
}

これを実行すると、1秒に1回iが表示されることが確認できまし、プログラムが終了さないことが確認できます。

# go run main.go
1
2
3
4
...

このようにプログラムが終了されない場合、ctrl + cキーを押すとプログラムが終了されます。

完了

これでGolangで唯一のループ文であるfor文を使う方法についてみてみました。また、for文の初期化文と後処理を省略することができることと、無限ループを作る方法についてもみてみました。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

アプリ広報

今見てるブログを作成たDekuが開発したアプリを使ってみてください。
Dekuが開発したアプリはFlutterで開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts