Golangのループステートメントとループ制御ステートメントの説明
I. ループ文
1. 通常のループ
1)構文
<ブロッククオートfor init; condition; post { }.
- init(オプション):制御変数に初期値を代入します。
-
condition(オプション): 制御条件(未入力時に等しい)
while True
). - post(オプション):制御変数のインクリメントまたはデクリメント。
2) 例
1. 1から10までの数の和を求めよ。
package main
import "fmt"
func main() {
count := 0
for i := 0; i <= 10; i++ {
count += i
}
fmt.Println("The sum of the numbers 1 to 10 is:",count)
}
実行結果
1から10までの数字の和は 55
2. initとpostの省略:countが10未満のときに自己和算の値を計算する。
package main
import "fmt"
func main() {
count := 1
for ; count < 10; {
count += count
}
fmt.Println("count is less than 10 when the self-summing value is:",count)
}
を省略することもできます。
;
NO.
package main
import "fmt"
func main() {
count := 1
for count < 10{ // omit semicolon
count += count
}
fmt.Println("The sum of the numbers 1 to 10 is:",count)
}
実行結果
countが10未満の時の自己和算の値は
3. Golangにはwhileループがないので、条件を省略することで実装できます。
package main
import "fmt"
func main() {
for { // omit condition
fmt.Println("dead loop")
}
}
2. ループのネスト
package main
import "fmt"
func main() {
for { // omit condition
fmt.Println("dead loop")
}
}
出力結果
1から10までの数字)×10の和:550
3.範囲ループ
文字列、配列、スライスなどを反復処理し、要素を出力するためのもの。
package main
import "fmt"
func main() {
strArray := []string{"a", "b","c"} //array of strings
for i,v := range strArray {
fmt.Println(fmt.Sprintf("subscript is: %d value is: %s", i,v))
}
}
出力結果
添え字は 0 値は: a
添え字は 1 値は: b
添え字が 2 の場合 値が c の場合
II. ループ制御文
1. ブレーク・ブレイク(ジャンプアウト)ループ
1)ブレイク(飛び出し)ループ
変数でデッドループを書く
a
は1を足し続け、aの値が3より大きくなると、ループから飛び出します。
package main
import "fmt"
func main() {
a := 1
for {
a++
fmt.Printf("The value of a is : %d\n", a)
if a > 3 {
/* Use the break statement to jump out of the loop */
fmt.Printf("Jumped out of loop")
break
}
}
}
出力結果
a の値は : 2
a の値は : 3
a の値は : 4
ループから飛び出す
2) 破りたい(飛び出したい)ループを指定する(ネストしたループで使う)
マーカーを使うことで、飛び出したいループを指定することができます。
次の、マークされていない、通常のブレークは、ループを壊し、現在のレベルのループのみを壊し、常に11の値を表示する外側のレベルでは壊さないようにします。
package main
import "fmt"
func main() {
for i := 1; i <= 2; i++ {
fmt.Printf("outer loop i: %d\n", i)
for j := 11; j <= 12; j++ {
fmt.Printf("inner loop j: %d\n", j)
break // Without using the marker, only the layer loop will be broken, not the outer loop
}
}
}
出力結果
外周ループ i: 1
内部ループ j: 11
アウターループ i: 2
内部ループ j: 11
以下のマーカーを使用し、外側ループの解除は1回のみの実行でループすることと同等であることを指定する。
package main
import "fmt"
func main() {
re:
for i := 1; i <= 2; i++ {
fmt.Printf("outer loop i: %d\n", i)
for j := 11; j <= 12; j++ {
fmt.Printf("inner loop j: %d\n", j)
break re // use the flag to break the outer loop
}
}
}
出力結果
外周ループ i: 1
内部ループ j: 11
2.Continue-現在のループをスキップする
continue は、現在のループをスキップして、次のループを実行するループで、ループを中断するものではありません
package main
import "fmt"
func main() {
for a := 1; a < 5; a++ {
if a == 3 { //execute continue when a=3 to skip
continue
}
//no print operation when a == 3
fmt.Printf("The value of a is : %d\n", a)
}
}
実行結果
a の値は : 1
aの値は2です。
aの値は4です。
ループがネストされている場合、continueでもbreakと同じようにループをスキップする指定ができます
3.goto-conditional転送
gotoは、指定されたコードに直接転送して実行することができます。
次のコードは、a=3のとき、forループからジャンプして、LOOPのある行で直接コードを実行します。
package main
import "fmt"
func main() {
for a := 1; a < 5; a++ {
if a == 3 { //a equals 3; execute goto to jump out
goto LOOP
}
//no print operation will be executed when a == 3
fmt.Printf("The value of a is : %d\n", a)
}
LOOP:fmt.Printf("a equals 3; execute goto jump out! ")
}
実行結果
a の値は : 1
aの値は2です。
aは3に等しい。gotoを実行して飛び出せ!
gotoの使用は推奨されませんし、コードの構造を混乱させる傾向があります。
Golangのループ文とループ制御文についてのこの記事は終わりです。goループ文とループ制御文についての詳しい情報は、スクリプトハウスの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。
関連
-
golang マイクロサービスフレームワーク 基本的なGin 基本的なルーティング 使い方 詳細
-
Go言語の基本型と定数の使用例詳細
-
golangはファイルをダウンロードするためにマルチプロセッシングを実装しています(ブレークポイント転送をサポート)。
-
囲碁言語の基本的なif条件文の使い方と例
-
初心者のための囲碁言語 ブラッシュアップ プリントアウト砂時計
-
Go Pluginでプラグインプログラミングを簡単に実装する方法
-
Go言語インタフェースの説明
-
Go(...)の3つのポイントを徹底分析 使用方法
-
データ競争のためのGo並行プログラミング
-
Redisをタスクキューとして利用する(Golang)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン