INDEX
continueの概要
ループの制御 Goの予約語 | ||
continue 概要 |
||
|
基本的なcontinueの使い方
continue
を使って偶数だけを出力する例です。
package main
import "fmt"
func main() {
for i := 1; i <= 10; i++ {
if i%2 != 0 {
continue // 奇数ならスキップ
}
fmt.Println(i)
}
}
解説:
if i%2 != 0
(奇数の場合)にcontinue
を実行し、そのループの残りの処理をスキップ。- 結果として偶数のみが出力される。
実行結果:
2 4 6 8 10
特定の条件で処理をスキップ
特定の条件に該当する場合のみ処理をスキップし、それ以外は通常の処理を行う例です。
package main
import "fmt"
func main() {
for i := 1; i <= 5; i++ {
if i == 3 {
fmt.Println("3はスキップ")
continue
}
fmt.Println("処理中:", i)
}
}
解説:
if i == 3
の条件が満たされた場合、continue
で処理をスキップ。- 「3はスキップ」と表示され、その後の
fmt.Println("処理中:", i)
は実行されない。
実行結果:
処理中: 1 処理中: 2 3はスキップ 処理中: 4 処理中: 5
ネストしたループでcontinueを使用
ネストされたループ(多重ループ)でcontinue
を使うと、内側のループのみをスキップします。
package main
import "fmt"
func main() {
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
if j == 2 {
continue // j == 2 のときスキップ
}
fmt.Println(i, j)
}
}
}
解説:
- 内側のループで
j == 2
の場合、continue
が実行され、fmt.Println(i, j)
がスキップされる。 - 外側のループ(
i
のループ)は影響を受けない。
実行結果:
1 1 1 3 2 1 2 3 3 1 3 3
ラベル付きcontinue(外側のループをスキップ)
通常のcontinue
は内側のループのみをスキップしますが、ラベルを付けることで外側のループをスキップできます。
package main
import "fmt"
func main() {
OuterLoop:
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
if j == 2 {
continue OuterLoop // 外側のループの次の反復へ
}
fmt.Println(i, j)
}
}
}
解説:
continue OuterLoop
を実行すると、外側のfor
ループの次の反復に移る。j == 2
のとき、内側のループだけでなく外側のループの次の反復へ進む。
実行結果:
1 1 2 1 3 1
注意事項
- continueは現在のループのみスキップ: 外側のループには影響しない。
- ラベル付きcontinueを使うと外側のループをスキップ可能: ただし、過度に使用するとコードの可読性が低下する。
- 無限ループに注意:
continue
を誤って使用すると、条件によっては無限ループになる可能性がある。
よくある質問
- Q: continueとbreakの違いは何ですか?
- A:
continue
は現在のループの反復をスキップし、次の反復に進みます。一方、break
はループ自体を終了します。 - Q: continueをif文なしで使うことはできますか?
- A: 可能ですが、通常は条件を指定せずに
continue
を使うと、全ての反復がスキップされてしまい意味がありません。 - Q: continueを使わずに同じ動作を実現する方法はありますか?
- A: はい。
if
文の中に実行すべき処理を書かずにreturn
やelse
を使うことで、continueを使わずにスキップ処理を実現できます。 - Q: continueを多用するとコードの可読性に影響しますか?
- A: はい。多用すると処理の流れが分かりづらくなるため、適切に使用することが重要です。
- Q: ラベル付きcontinueとgotoの違いは何ですか?
- A:
continue
はループの次の反復へ移りますが、goto
はコードの指定したラベルへ無条件でジャンプします。continue
の方が安全で可読性も高いです。
まとめ
continue
は現在のループの残りの処理をスキップし、次の反復へ進む。- 特定の条件を満たした場合にのみ処理をスキップするのに便利。
- ネストしたループでは、内側のループの処理のみをスキップする。
- ラベル付き
continue
を使うと、外側のループをスキップできる。 - 過度な使用はコードの可読性を下げるため、適切に利用することが重要。