for文を理解しよう!Go言語での書き方をやさしく解説

Go言語
この記事は約8分で読めます。
Go初学者
Go初学者

Go言語のfor文はどう記述するのかな?

この記事ではGo言語のfor文について理解できます!
  • Go言語でのfor文の記述方法2種類
  • for文で出くわす無限ループ脱出法
  • continueについて
  • breakについて
  • rangeを使って配列から値を出力する

繰り返し処理をするfor文は、どのプログラミング言語でも覚えておかなければいけない制御構文です。

今回はGo言語のfor文の基本的なことを理解していきます。

もりぴ
この記事を書いた人

XHTML1.0時代にHTML&CSSを勉強した経験あり。無趣味だった私が2020年5月からプログラミング学習を開始し現在も挫折せずに趣味で学習を楽しんでいる51歳。プログラミングの楽しさをブログを通してお伝えしていきます。

もりぴをフォローする

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文と一緒にに使用される continuebreak について使用例を見ながら確認していきましょう。

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つの値が帰ってきます。

POINT
range関数が戻り値として返す値
  1. インデックス番号
  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 条件 {
    // 繰り返し処理する内容
    // 増減(後処理)
}
Go言語のfor文で知っておくこと!
  • continueは処理をスキップする時に使用する
  • breakは処理を中断する時に使用する
  • 配列から値を取得するにはrange関数(簡易式for文)が便利
  • 無限ループになったら慌てずに ctrl + c を同時に押してプログラムの処理を強制終了

for文は繰り返し処理の制御構文として、Go言語だけでなく他のプログラミング言語でも習得必須な構文です。

焦らずゆっくりで大丈夫なので、コードを実際に書いて身につけていきましょう。

comment

タイトルとURLをコピーしました