今までのサンプルプログラムでは、サイコロの目を複数回表示してきました。このように同じ処理を複数回行う場合は、同じ処理を複数行書くのではなく、繰り返し処理というもの行います。
Go 言語で繰り返し処理を行う場合は、for 文というもの使います。Go 言語には、他の言語にあるような while 文という繰り返し処理はありません。Go 言語の繰り返し処理は、すべて for 文を使って行います。
package main
import ("math/rand"
"time"
"fmt"
)
func main() {
rand.Seed(time.Now().Unix())
for i := 1; i <= 3; i++ {
fmt.Printf("%d 回目のサイコロの目は %d です\n", i, rand.Intn(6)+1)
}
}
1 回目のサイコロの目は 4 です
2 回目のサイコロの目は 5 です
3 回目のサイコロの目は 1 です
for i := 1; i <= 3; i++ {
fmt.Printf("%d 回目のサイコロの目は %d です\n", i, rand.Intn(6)+1)
fmt.Printf の中では、複数の書式が使えます。1 番目の %d には、変数 i の値が与えられ、2 番目の %d には、rand.Intn(6)+1 の値が与えられます。
}
for 文の処理は、からなず } で閉じなければなりません。
for 文を使って、他のプログラミング言語の while 文や、do-while 文を真似ることもできます。
package main
import ("math/rand"
"time"
"fmt"
)
func main() {
rand.Seed(time.Now().Unix())
i := 1
for i <= 3 {
fmt.Printf("%d 回目のサイコロの目は %d です\n", i, rand.Intn(6)+1)
i++
}
}
package main
import ("math/rand"
"time"
"fmt"
)
func main() {
rand.Seed(time.Now().Unix())
i := 1
for {
fmt.Printf("%d 回目のサイコロの目は %d です\n", i, rand.Intn(6)+1)
i++
if i > 3 { break }
}
}
if i > 3 { break }
この部分は、if 文と呼ばれるもので、i > 3 という条件に合っていれば、{ } の中の処理が実行されます。break というキーワードは、その時点で繰り返しを終了させることを意味しています。なお、if 文については「条件分岐」の章で、詳しく説明します。