Go言語のfor文について、ここまでいろいろと見てきていますが、ここでは反復処理の途中で処理を中断したり、処理を飛ばしたりする方法を見ていきましょう。
ループ処理の中断にはbreakを、当該処理を飛ばして次の処理に移るにはcontineを使います。
breakによるループ中止
まずは、breakキーワードを使って、ループ処理を中止して処理を終了させる方法を見ていきましょう。
次のコードで見て行きます。
package main
import "fmt"
func main() {
x := 0
for {
x++
if x > 20 {
break
}
fmt.Println(x)
}
fmt.Println("処理を終了しました。")
}
for文でx++を使って、xに1を加えて表示するコードですが、この中でif文を使って条件をつけています。
このif文が無かった場合は、無限ループになって延々と数値が表示され続けることになります。
ここでif文の条件式の中で、x > 20として、xが20を超えた場合はbreak処理、つまり反復処理から抜け出すということになっています。
実行すると次のようになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
処理を終了しました。
breakで処理を抜けた後に、「処理を終了しました。」の表示の処理に移っていることがわかります。
continueによる処理のスキップ
今度は、continueキーワードを使って、反復処理の中である条件下ではその処理を飛ばして処理を繰り返すということを見て行きます。
次のようなコードを見てみましょう。
package main
import "fmt"
func main() {
for x := 0; x <= 20; x++ {
if x%2 != 0 {
continue
}
fmt.Println(x)
}
fmt.Println("処理を終了しました。")
}
ここでは、for文の基本的な形を使って、xの値を順次表示していく処理になっています。
20まで表示するのですが、この中でif文を使って処理をスキップする条件を記述しています。
ここでは、数値が偶数では無い場合、つまり奇数の場合はcontinueを使ってスキップするという処理になっています。
実行結果は次のようになります。
0
2
4
6
8
10
12
14
16
18
20
処理を終了しました。
以上のように偶数だけを表示して、処理を終了しています。
continueとbreak
ここでは、contineとbreakの両方を使ったコードを扱ってみます。
上の2つのコードを合わせてた形で次のようなコードを書いてみました。
package main
import "fmt"
func main() {
x := 0
for {
x++
if x > 20 {
break
}
if x%2 != 0 {
continue
}
fmt.Println(x)
}
fmt.Println("処理を終了しました。")
}
前半のfor文の1づつ増やしていく処理のブロックの中で、break処理をしています。値が20を超えた場合に処理を中断する処理です。
if文のブロックで、偶数で無い場合に処理をスキップするようにcontinueを記述しています。
実行結果は次のようになります。
2
4
6
8
10
12
14
16
18
20
処理を終了しました。
偶数を表示して20を超えたところで処理を終了しています。
このコードで最初に0が表示されていないのは、for文のブロックの中で、最初に1を加えてから評価に移っているためです。
Pythonコードで書くと…
同じコードではありませんが、同様の処理をPythonコードで、continueとbreakを使って書いてみます。
def main():
for i in range(50):
if i == 20:
print("処理を中断します。")
break
if i % 2 != 0:
continue
print(i)
if __name__ == "__main__":
main()
for – in文とrange()を使ってループさせています。ここでは無限ループの処理にはしていません。50までの繰り返し処理です。
最初のif文でbreak処理をしています。この場合は、値が20になった時に処理の中断を行っています。
次のif文で、偶数で無い場合に処理をスキップして反復処理に戻るようにしています。
実行すると次のようになります。
0
2
4
6
8
10
12
14
16
18
処理を中断します。
最後に
ここでは、Go言語の反復処理を行う中で、breakとcontinueについて扱いました。
処理の中断にはbreakを、当該処理をスキップして次の処理に移るにはcontineを使用します。