Go言語 for文のサンプル(break/continue)

Go言語のfor文のサンプルです。処理を繰り返す時に使用します。

目次

for文 for文
  for文で配列の値を取得する
break ループ処理を途中で終了する(break)
  2重ループ(入れ子)のときにbreakを使用する
continue ループ処理で処理をスキップする(continue)
  2重ループ(入れ子)のときにcontinueを使用する
range ループで加算を使用しないfor文(range)

for文

for 1.値を初期化 ; 2.条件 ; 3.値を更新 {
  繰り返される箇所
}
  • 処理を繰り返す時に使用します。最初にforを書くのでfor文と呼ばれます。
  • 初期化は、最初に1回だけ実行されます。
  • 使用する変数をカウンター変数またはループ変数といいます。
    →変数名はiやjがよく使用されます。
  • 条件がtrueの間、処理を繰り返します。
  • 条件がfalseの場合、ループ処理を終了します。
  • 「3.値を更新」でカウンター変数/ループ変数の値が変わります。
  • 以下は、Go言語公式のEffective Goのfor文のリンクです。
    https://golang.org/doc/effective_go.html#for

for文のサンプル

package main
import "fmt"

func main() {
	for i := 0; i < 5; i++ {
		fmt.Println(i) // 0 1 2 3 4が出力される
	}
}

5行目は、初期化式(i:=0)によりiは0から始まります。iはカウンター変数と呼ばれます。
真ん中の条件式は、i<5でiが5より小さいときは処理を実行します。
右の増減式は、i++でiが1つずつ増加します。
iの値が5になるとループ処理を終了します。

for文で配列の値を取得する

package main
import "fmt"

func main() {
	color1 := []string{"赤", "黄", "青"}

	for i := 0; i < len(color1); i++ {
		fmt.Println(color1[i]) // 赤 黄 青が出力される
	}
}

5行目は、配列です。
7行目のlenは、配列の長さを返します。
8行目は、変数と添字で配列の値を表示しています。配列の添字は0から始まります。

ループ処理を途中で終了する(break)

break
  • for文でbreakを使用するとループ処理から抜けます。
package main
import "fmt"

func main() {
	for i := 0; i < 5; i++ {
		if i == 3 {
			break
		}
		fmt.Println(i) // 0,1,2が出力される
	}
}

7行目のbreakでfor文を抜けます。

2重ループ(入れ子)のときにbreakを使用する

package main
import "fmt"

func main() {
	for i := 0; i < 3; i++ {
		for j := 0; j < 3; j++ {
			if j == 0 {
				break
			}
			fmt.Println("j=", j) //出力なし
		}
		fmt.Println("i=", i) // i=0,i=1,i=2が出力される
	}
}

5,6行目にfor文があり2重ループ(入れ子)になっています。
8行目のbreakは、内側のfor文のみ抜けます。

ループ処理で処理をスキップする(continue)

continue
  • for文でcontinueを使用すると、ループ処理の先頭に戻ります。
package main
import "fmt"

func main() {
	for i := 0; i < 3; i++ {
		if i == 1 {
			continue
		}
		fmt.Println("i=", i) //i=0 i=2が出力される
	}
}

7行目のcontinueでループ処理の先頭の5行目に戻ります。
9行目は、i=0とi=2が出力されます。

2重ループ(入れ子)のときにcontinueを使用する

package main
import "fmt"

func main() {
	for i := 0; i < 3; i++ {
		for j := 0; j < 3; j++ {
			if j == 0 {
				continue
			}
			fmt.Println("j=", j) //j=1,j=2,j=1,j=2,j=1,j=2が出力される
		}
		fmt.Println("i=", i) // i=0,i=1,i=2が出力される
	}
}

5,6行目にfor文があり2重ループ(入れ子)になっています。
8行目のcontinueは、内側のfor文の先頭の6行目に戻ります。

ループで加算を使用しないfor文(range)

for 変数1,変数2 := range 配列などの変数 {
  繰り返される箇所
}
  • 上記for文との違いは、変数の値を加算する処理がありません。
  • 配列などの要素を順番にアクセスします。

ループで加算を使用しないfor文のサンプルです。

package main
import "fmt"

func main(){
	color1 := []string{"赤","黄","青"}

	for a, b := range color1{
		fmt.Println(a,b) //0 赤 1 黄 2 青が出力される
	}

	for _, b := range color1{
		fmt.Println(b) //赤 黄 青が出力される
	}
}

5行目は、配列です。
7行目は、for文+rangeで配列のすべての要素にアクセスします。
8行目は、キーと値を表示します。
11行目は、キーと値のうちの値のみを取得しています。キーに当たる部分をアンダースコア(_)にします。

関連の記事

Go言語 if文のサンプル
Go言語 switch文のサンプル

△上に戻る