Go言語のfor文のサンプルです。処理を繰り返す時に使用します。
目次
for文 | for文 |
break | ループ処理を途中で終了する(break) |
入れ子のときにbreakを使用する | |
continue | ループ処理で処理をスキップする(continue) |
入れ子のときに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が出力される
}
color1 := []string{"赤","黄","青"}
for i := 0; i < len(color1); i++ {
fmt.Println(color1[i]) // 赤 黄 青が出力される
}
}
5行目は、初期化式(i:=0)によりiは0から始まります。iはカウンター変数と呼ばれます。
真ん中の条件式は、i<3でiが3より小さいときは処理を実行します。
右の増減式は、i++でiが1つずつ増加します。
iの値が3になるとループ処理を終了します。
9行目は、配列です。
10行目のlenは、配列の長さを返します。
11行目は、変数と添字で配列の値を表示しています。配列の添字は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が出力される
}
}
9行目のbreakでfor文を抜けます。
11行目は、i=0のみ出力されます。
入れ子のときにbreakを使用する
for文が入れ子のときの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が出力される
}
}
6,8行目にfor文があり入れ子になっています。
11行目の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が出力される
}
}
9行目のcontinueでループ処理の先頭の6行目に戻ります。
11行目は、i=0とi=2が出力されます。
入れ子のときにcontinueを使用する
for文が入れ子のときの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が出力される
}
}
6,8行目にfor文があり入れ子になっています。
11行目のcontinueは、内側のfor文の先頭の8行目に戻ります。
ループで加算を使用しない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行目は、キーと値のうちの値のみを取得しています。キーに当たる部分をアンダースコア(_)にします。
比較演算子
上記コードの==は比較演算子です。
比較演算子は、2つの値を比べて真偽値(true/false)を返します。
条件を満たしていればtrue,そうでない場合はfalseです。
比較演算子 | 説明 |
---|---|
a == b | aとbの値は等しい |
a != b | aとbの値は等しくない |
a > b | aはbより大きい |
a >= b | aはbより大きい または 等しい |
a < b | aはbより小さい |
a <= b | aはbより小さい または 等しい |
関連の記事