Go言語のfor文の基本について見てきました。
このfor文は、ネストした形で利用することもできます。
for文の中でfor文を利用して反復処理を行うことは、他のプログラミング言語でも見られるものですので、理解はしやすいと思います。
ネストされたfor文のloop処理
for文をネストした形で利用してみます。
次のようなコードで確認してみましょう。
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
fmt.Printf("外側の反復処理: %d\n", i)
for j := 0; j < 3; j++ {
fmt.Printf("\t 内側の反復処理: %d\n", j)
}
}
}
外側の反復処理を、iの初期化式で行います。ループ継続条件式は4まで、増減式では1を加えます。
内側の反復処理を、jの初期化式で行います。ループ継続条件式は2まで、増減式では1を加えます。見やすくするために、こちらの処理はタブを使ってずらして表示させます。
外側の反復処理を1回する毎に、内側の反復処理を全ておこない、外側の反復処理の回数だけ行うという処理です。
外側の反復処理: 0
内側の反復処理: 0
内側の反復処理: 1
内側の反復処理: 2
外側の反復処理: 1
内側の反復処理: 0
内側の反復処理: 1
内側の反復処理: 2
外側の反復処理: 2
内側の反復処理: 0
内側の反復処理: 1
内側の反復処理: 2
外側の反復処理: 3
内側の反復処理: 0
内側の反復処理: 1
内側の反復処理: 2
外側の反復処理: 4
内側の反復処理: 0
内側の反復処理: 1
内側の反復処理: 2
外側のループ処理と内側のループ処理がネストされた形で出力できているのが確認できます。
Pythonコードで書くと…
このネストされたfor文のコードをPythonでも書いてみましょう。
ただし、for文の初期化式、ループ継続条件式、増減式での反復処理はPythonには無いので、range()を使って同様なコードを書いてみます。
def main():
for i in range(5):
print("外側の反復処理:", i)
for j in range(3):
print("\t 内側の反復処理:", j)
if __name__ == "__main__":
main()
実行すると、外側の反復処理と内側の反復処理がネストされた形で、次のように表示されることが確認できるはずです。
外側の反復処理: 0
内側の反復処理: 0
内側の反復処理: 1
内側の反復処理: 2
外側の反復処理: 1
内側の反復処理: 0
内側の反復処理: 1
内側の反復処理: 2
外側の反復処理: 2
内側の反復処理: 0
内側の反復処理: 1
内側の反復処理: 2
外側の反復処理: 3
内側の反復処理: 0
内側の反復処理: 1
内側の反復処理: 2
外側の反復処理: 4
内側の反復処理: 0
内側の反復処理: 1
内側の反復処理: 2
最後に
ここでは、Goのfor文を使ってネストされた反復処理を行ってみました。
for文の中でfor文のループ処理を行うことです。
他の言語でも同様なことをする処理は多く見られるので、特に目新しいものでは無いと思います。