bam6o0の記憶域

忘備録になればいいな

Go言語の勉強記録7bit

繰り返し処理

  • Go言語のでループ分はforのみでwhile文はない

for文

  • for文の書式
for 初期条件;条件式;後処理文{
  //処理
}

実行結果

$go run for.go
0
1
2
3
4
  • 初期化条件は省略文可能
  • 他の文を記述することも可能
  • 条件式はtrue中処理され、falseになったら終わる。
  • 初期化分と後処理文は不要であればセミコロンだけで記述可能
for ;i<5; {
   ///処理
}

while文相当

  • for文と条件式のみ記述してwhile文をつくれる。
for 条件式{
  ///処理
}

実行結果

$go run condition.go
0
1
2
3

無限ループ

  • for文のキーワードだけ記述すると無限ループ
for{
  //処理
}

実行結果

$go run infinity.go
0
1
2
3
4

range式を使用する書式

  • for文でrange式を使用すると配列などの値から要素を1つずつ取り出してループできる。
  • 書式
for 変数 := range 要素を取り出す値{
  //このブロックの処理が繰り返される
}

実行結果

$go run range.go
0
1
2
3
4
  • range式で使用できる値は、型が配列・スライス・文字列。マップ・チャンネル
  • range式に文字列を与えた時は、文字列内の文字数ループ

実行結果

$go run range_string.go
0 97
1 98
2 99
3 12354
6 12356
9 12358
  • 文字列をrange式に与えた時、返される一番目の型は文字列内のバイトインデックス(int
  • 文字列をrange式に与えた時、返される二番目の型はUnicodeコードポイント(rune)
  • a,b,cは1バイト、あ、い、うは3バイト消費であるため、インデックスは連続した値にならない。

break文

  • 強制的にブロック内からループ文を抜ける処理

実行結果

$go run break.go
0
1
2

continue文

  • ループ処理ブロック内の以降の処理をスキップする処理
  • ループの条件式の判定に強制的に戻る

実行結果

$go run continue.go
0
2
4