「Go/条件分岐と繰り返し」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
71 行
</syntaxhighlight>
 
=== 繰り返しイテレート - for文 ===
Goでは、For文がイテレート(繰返し;反復)する唯一の構文です(Goには、doやwhileはありません)。
{{Main|Go/文#For文}}
Goでは、For文が繰り返し処理をする唯一の構文となっている。For文には2種類の使い方がありますCやC++などのように
{{MainSee also|Go/文#For文}}
 
CやC++などのように
: <syntaxhighlight lang="go">for i := 0; i < n; i++ {
// 繰返す処理
}
</syntaxhighlight>
 
と書く方法と、C++の範囲For文やPythonのenumerate関数を伴ったFor文のように
 
: <syntaxhighlight lang="go">
for i, e := range collection {
// 繰返す処理
}
</syntaxhighlight>
 
という、スライスや配列、mapなどのコレクションから一つずつ要素を取り出していく方法があります。
 
まず、前者の方の使い方を説明します。
 
<syntaxhighlight lang="go">
for 初期化; 条件式; ポスト文 {
// 繰返す処理
}
</syntaxhighlight>
 
''初期化''および''ポスト文''は単純な文(簡単な変数宣言、インクリメント文、代入、関数呼び出し)でなくてはならない。また、条件式は論理式 (trueかfalseを返す式)でなくてはならない。For文は次のように実行される。
 
# 初期化
# 返す処理
# ポスト文
# 条件式が true ならばもう一度 2.に戻る。偽ならFor文を終了する。
 
また、C言語などと同様にGoでも、Break文やReturn文などがforブロック中({ } の内部)にあれば、すべての要素をイテレートする前にFor文から抜けします。
 
;[https://play.golang.org/p/HOu9YH_kkGQ5YquULYfrQ6 コード例]:<syntaxhighlight lang="go">
package main
 
112 ⟶ 115行目:
 
func main() {
for i := 1; i <= 56; i++ {
fmt.Printf("%d * 2 = %d です\n", i, i*2)
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
1 * 2 = 2 です
2 * 2 = 4 です
3 * 2 = 6 です
4 * 2 = 8 です
5 * 2 = 10 です
</syntaxhighlight>