Go言語で繰り返し処理(ループ)を記述するために用意されている構文はfor
のみとなっています。
while
やdo while
といったものは提供されていません。
無限ループ
他の言語であれば、無限ループを記述する場合は、 while(true) { xxx }
といったようにwhile
を利用する場合が多いと思います。
が、先に書いたようにGo言語にはwhile
はありません。for
を使って以下のように記述します。
for { // ここに無限ループで実行する処理を記述 fmt.Println("Running...") }
独特と言えば独特ですが、慣れてしまえばなんてことない気もします。
while的な記述
他言語のwhile
文のようにループ条件だけを記述したい場合はfor
で以下のように書くことができます
coundown := 10 for coundown > 0 { fmt.Printf("coundown: %d\n", coundown) coundown-- }
典型的なfor
ループ変数を利用して1ずつ値を増加させてある最大値まで処理をさせるといった、基本的なループは以下のように記述します
for i := 0; i < 10; i++ { // iの値が0から9まで変化していく fmt.Printf("i = %d\n", i) }
Go言語の構文の関係で、他言語でみられる 初期値や条件を指定する部分を括弧で囲む という記述はできません
rangeを使ったfor
いわゆる 拡張for文(foreach文)と呼ばれるループを行う場合はrange
節を使用します
例えば配列に対するrangeを利用したforループは以下のように記述できます
strArray := [5]string{"taro", "jiro", "hanako", "ken", "tom"} for i, s := range strArray { fmt.Printf("index: %d, name: %s\n", i, s) }
配列に対するrangeでは、index番号と要素の値が返されます。
例えば、配列に対するrangeで返されるindex番号が処理上不要という場合には以下のように無視することもできます。
strArray := [5]string{"taro", "jiro", "hanako", "ken", "tom"} for _, s := range strArray { fmt.Printf("name: %s\n", s) }