
Go言語のfor文はどう記述するのかな?
繰り返し処理をするfor文は、どのプログラミング言語でも覚えておかなければいけない制御構文です。
今回はGo言語のfor文の基本的なことを理解していきます。
Go言語のfor文(繰り返し)の基本的な記述方法
Go言語ではfor文の記述方法として2種類あります。
一般的なfor文の記述方法
Go言語での一般的なfor文の構成を見てみましょう。
// Go言語のFor文基本的な構成
for 初期値; 条件; 増減(後処理) {
// 繰り返し処理する内容
}
では、上記の構成を元に簡単なプログラムを記述してみます。
// Go言語のfor文
package main
import "fmt"
func main() {
// 古典的for文(一般的なfor文)
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
// 出力結果
$ go run main.go
0
1
2
3
4
5
6
7
8
9
初期値が i := 0
なので0からスタートし、後処理が i++
でiが1づつ増加し条件が i < 10
でiが10まで処理を繰り返すプログラムです。
iが10になったら処理が終了するので、出力する値は0から9までの値になります。

こちらのfor文を覚えておけば基本的には大丈夫です。
Go言語でのfor文もうひとつの記述方法
Go言語は他のプログラミング言語にあるwhile文がありません。
ですが、while文に似た書き方でfor文を書くことができます。
では、そのfor文の構成から見ていきましょう。
// Go言語のFor文(while文に似た書き方)
初期値
for 条件 {
// 繰り返し処理する内容
// 増減(後処理)
}
では、上記の構成を元に簡単なプログラムを確認していきます。
// Go言語のFor文(while文に似た書き方)
package main
import "fmt"
func main() {
i2 := 0
for i2 < 5 {
fmt.Println(i2)
i2++ // 増分を忘れずに!
}
}
// 出力結果
$ go run main.go
0
1
2
3
4
出力結果は、先に紹介した基本的なfor文と一緒です。
continueとbreak
for文と一緒にに使用される continue
と break
について使用例を見ながら確認していきましょう。
continueについて
continueは処理をスキップする時に使用します。
では、先程のプログラムを元にcontinueを使用してみましょう。
// Go言語のfor文 continue
package main
import "fmt"
func main() {
for i3 := 0; i3 < 5; i3++ {
// i3が3であれば処理をスキップ
if i3 == 3 {
continue
}
fmt.Println(i3)
}
}
// 出力結果
// 3がスキップされて出力されていない
$ go run main.go
0
1
2
4
breakについて
breakは処理を中断する時に使用します。
では、先程のプログラムを元にbreakを使用してみましょう。
// Go言語のfor文 break
package main
import "fmt"
func main() {
for i4 := 0; i4 < 5; i4++ {
// i4が3であれば処理が中断
if i4 == 3 {
break
}
fmt.Println(i4)
}
}
// 出力結果
// i4が3で処理が中断
$ go run main.go
0
1
2
for文で気をつけたい無限ループ
基本的にfor文は、初期値・条件・増減(後処理)の3セットで使用します。
意図的に無限ループでfor文を書き、if文とbreakで無限ループを抜けるプログラムもあります。
// 無限ループ(参考)
for {
// 処理
if 条件 {
break
}
}
そうではなく、for文を使用したプログラムを書いて無限ループになった時は慌てずに…

ctrl + c を同時に押してプログラムの処理を強制終了しましょう。
for文を使用して配列の値を取得する
for文は配列の要素の値を取得する時に使用されます。
配列の値を出力する方法は2種類あり、それぞれコード見ながら確認していきましょう。
一般的なfor文で配列の値を取得する
一般的なfor文で配列の値を出力してみましょう。
// for文で配列の要素を取り出す
package main
import "fmt"
func main() {
arr := [3]string{"Golang", "PHP", "C++"}
// len()は配列の要素数を出力する関数
for i5 := 0; i5 < len(arr); i5++ {
fmt.Println(arr[i5])
}
}
// 出力結果
$ go run main.go
Golang
PHP
C++
配列の値を出力することができました。
条件式で使用している len()
は、配列の要素数を出力する関数です。
rangeを使って配列から値を取得する(簡易式for文)
Go言語では range関数 (簡易式for文)を使うことで、簡単に配列から値を取得することができます。
range関数を使用すると、戻り値として2つの値が帰ってきます。
では、プログラムを確認してみましょう。
// 簡易式for文
package main
import "fmt"
func main() {
arr := [3]string{"Golang", "PHP", "C++"}
// 変数iにインデックス番号 変数vに値
for i, v := range arr {
fmt.Println(i, v)
}
}
// 出力結果
$ go run main.go
0 Golang
1 PHP
2 C++
出力結果としてインデックス番号と配列の値が表示されています。
もし、インデックス番号が不要の場合は _ を使用します。
// 簡易式for文
package main
import "fmt"
func main() {
arr := [3]string{"Golang", "PHP", "C++"}
// インデックス番号が不要な場合
// インデックスの箇所を「_」に変更する
for _, v := range arr {
fmt.Println(v)
}
}
// 出力結果
$ go run main.go
Golang
PHP
C++
インデックス番号のみ必要な場合は _ を使用しません。
// 簡易式for文
package main
import "fmt"
func main() {
arr := [3]string{"Golang", "PHP", "C++"}
// インデックス番号のみ出力する場合
// 「_」は不要
for i := range arr {
fmt.Println(i)
}
}
// 出力結果
$ go run main.go
0
1
2

配列の値を取得すらならrange関数を使用した、簡易式for文の方が便利ですね。
【まとめ】Go言語のfor文の基本
今回はGo言語のfor文の基本をお伝えしてきました。
ここで、まとめに入りましょう。
Go言語でのfor文の記述方法2種類
// Go言語のFor文基本的な構成
for 初期値; 条件; 増減(後処理) {
// 繰り返し処理する内容
}
// Go言語のFor文(while文に似た書き方)
初期値
for 条件 {
// 繰り返し処理する内容
// 増減(後処理)
}
for文は繰り返し処理の制御構文として、Go言語だけでなく他のプログラミング言語でも習得必須な構文です。
焦らずゆっくりで大丈夫なので、コードを実際に書いて身につけていきましょう。
comment