A Tour of Go をやる! その18 「For」 ~いよいよループ!~ 【Go言語/A Tour of Go】

2018年10月23日GoA Tour of Go,for,Goのお勉強,Go言語,ループ,制御文Go,A Tour of Go,for,Goのお勉強,Go言語,ループ,制御文

記事ヘッダー_For

「A Tour of Go をやる!」シリーズの第18回目。
今回の内容はループ。というわけで、制御系に関するセクションに入ったようです。

今回進めるページは「For」

「A Tour of Go」の該当ページはこちら。

ページで説明されていること

ページで説明されていることを私なりにまとめてみます。
内容としては、主にForループで指定できる式(条件等)に関するものです。

  1. Forループにはセミコロンで区切った3種類の式を指定できる
  2. 初期化ステートメントはForのスコープ内だけで有効
  3. 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.)

https://golang.org/ref/spec#For_statements
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の使い方は一通り確認できたので、サンプルプログラムを見てみます。

0+1+2+3+…+9 の計算を、ループで実現してますね~。

さいごに

というわけで、Forループの基本な内容でした。
書き方やループ回数の数え方など、慣れないと少しややこしい部分もありますが、プログラミングでは使用頻度が高い(ほぼ必須?)構文なので、すぐに慣れられるんじゃないかなぁ?

こんな感じですが今回はここまで。
それではまた次回~٩(-ω-´)و

「Go言語のお勉強」インデックス

このシリーズについて

「A Tour of Go」を題材にした記事は現在書き直し中…。_(:3」∠)_
ほとんどサボりが原因で尻切れとなっていたシリーズですが、最近になってようやく続きを書きたくなり再開をしようと思ったんです。が、古い記事を見返すとデータ・フォーマットが古かったり内容が分かり難かったりに気づきまして、、、この際だからと最初の記事から書き直しをすることになりました…