
「A Tour of Go をやる!」シリーズの第18回目。
今回の内容はループ。というわけで、制御系に関するセクションに入ったようです。
今回進めるページは「For」
「A Tour of Go」の該当ページはこちら。
ページで説明されていること
ページで説明されていることを私なりにまとめてみます。
内容としては、主にForループで指定できる式(条件等)に関するものです。
- Forループにはセミコロンで区切った3種類の式を指定できる
- 初期化ステートメントはForのスコープ内だけで有効
- Forループは条件式の評価が false で終了
Forで指定できる3種類の式
Forで指定できる3種類の式と実際の書き方です。
式の種類 | 説明 |
---|---|
[初期化ステートメント] | ループ内だけで利用できる変数の宣言と初期化を行う。 初期化はループに入る直前に一度きり。 |
[条件式] | ループするたび処理の開始前に式が評価され、評価の結果が false ならループ終了。 |
[後処理ステートメント] | ループするたび処理の最後(繰り返す直前)に実行される。 |
// for の書き方
for [初期化ステートメント] ; [条件式] ; [後処理ステートメント] {
... (処理)
... (初期化ステートメントは for の {} 内のみ有効)
}
// e.g.
for counter := 0 ; counter < 10 ; counter++ {
... (counter は 0 から +1 ずつ変化する)
... (counter が 10 になると条件式が false (10<10=false) になるのでループが終わる)
... (つまり10回繰り返す)
}
言語仕様の確認
Forについて、言語仕様を見てみます。
For statements
A “for” statement specifies repeated execution of a block. There are three forms: The iteration may be controlled by a single condition, a “for” clause, or a “range” clause.
「for」ステートメントは、ブロックの繰り返し実行を指定します。 3つの形式があります。反復は、単一の条件、「for」句、または「range」句によって制御できます。(by Google Translated.)
ForStmt = "for" [ Condition | ForClause | RangeClause ] Block .
Condition = Expression .
これもまとめてみます。
- for はブロックを繰り返し実行する
- 3つの形式がある
- ループは、単一の条件、あるいは[ForClause] (条件式)と[RangeClause](後処理ステートメント)で制御できる
「3つの形式」についてはForの書き方パターンのことだと思われる。
Forの3つの形式
forの書き方(構成)パターンは次の通り。
// ① 条件式のみ
for [条件式] {
... (処理)
}
// e.g.
for a < b {
... (処理)
}
// ② 初期化+条件式+後処理
(少し前で書いたので割愛)
// ③ 配列等を基準としたループ
for [配列] {
... (処理)
}
// e.g.
var prime_ministers = []string{"Kisida", "Suga", "Abe", "Noda"}
for index, prime_minister := range prime_ministers {
... (処理)※配列の数だけループする
}
サンプルプログラムを見る
Forの使い方は一通り確認できたので、サンプルプログラムを見てみます。
package main
import "fmt"
func main() {
// 集計用の変数
sum := 0
// 0~9まで計10回ループ
for i := 0; i < 10; i++ {
// 集計用の変数に i を加算する
sum += i
}
fmt.Println(sum) // =45
}
0+1+2+3+…+9 の計算を、ループで実現してますね~。
さいごに
というわけで、Forループの基本な内容でした。
書き方やループ回数の数え方など、慣れないと少しややこしい部分もありますが、プログラミングでは使用頻度が高い(ほぼ必須?)構文なので、すぐに慣れられるんじゃないかなぁ?
こんな感じですが今回はここまで。
それではまた次回~٩(-ω-´)و
コメント