English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 基礎トレーニング

Golang 制御文

Golang ファンクション & メソッド

Golang 構造体

Golang スライス & 配列

Golang 文字列(String)

Golang ポインタ

Golang インターフェース

Golang 并行処理

Golang エラーハンドリング

Golang その他の項目

Go 言語のループ文(forループ)

Go言語のforループは、特定の回数を実行するループ制御文です。Go言語では、このforループは異なる形式で使用できます。これらの形式には:

1.シンプルなforループ私たちは他のプログラミング言語(例えばC、C ++、Java、C#などで使用される似たものです。

文法:

for initialization; condition; post{
       // 文....
}

ここでは、

  • 初期化(initialization)文はオプションで、ループの始めに実行されるものです。初期化文は常にシンプルな文の中に位置しており、例えば変数の宣言、インクリメントまたはアサイン文、または関数呼び出しです。

  • 条件(condition)文は、ループの各イテレーションの始めに計算される布尔表現を含んでいます。条件文の値がtrueの場合、ループを実行します。

  • post文はforループの本体の後に実行されます。post文の後、条件文の値がfalseであるかどうかを再計算し、ループが終了します。

//forループを使用します。  
package main 
  
import "fmt"
  
//メイン関数 
func main() { 
      
    // for ループ
        //このループはi = 0の時に実行を開始し、i<4条件が真
        //post文はi++
    for i := 0; i < 4; i++{ 
      fmt.Printf("w3codebox\n")   
    } 
    
}

出力:

w3codebox
w3codebox
w3codebox
w3codebox

2. forループを無限ループとして使用:forループからすべての3つの表現を削除することで、forループは無限ループとしても使用できます。ユーザーがforループに条件文を書かない場合、これは条件文がtrueであることを意味し、ループは無限ループに入ります。

文法:

for{
     // 文...
}
// 無限ループを使用します。  
package main 
  
import "fmt"
   
func main() { 
      
    // 無限ループ 
    for { 
      fmt.Printf("w3codebox\n")   
    } 
    
}

出力:

w3codebox
w3codebox
w3codebox
w3codebox
w3codebox
w3codebox
w3codebox
w3codebox
w3codebox
w3codebox
...........

3. forループをwhileループとして使用: forループはまたwhileループとして使用できます。このループは、指定された条件が真になるまで実行されます。指定された条件の値がfalseの場合、ループは終了します。

文法:

for condition{
    //文..
}
//forループとwhileループは同じです 
package main 
  
import "fmt"
   
func main() { 
      
      //whileループ
      //forループは実行され
      //i <3条件が真
    i:= 0 
    for i < 3 { 
       i += 2 
    } 
  fmt.Println(i)  
}

出力:

4

4. forループのシンプルな範囲:また、forループの中で範囲を使用します。

文法:

for i, j:= range rvariable{
   // 文..
}

ここでは、

  • iとjはイテレーション値を割り当てる変数です。これらはイテレーション変数とも呼ばれます。

  • 第2つの変数、つまりjはオプションです。

  • 範囲表現はループの前に一度評価されます。

package main 
  
import "fmt"
func main() { 
      
    //ここではrvariableは配列です。 
    rvariable:= []string{"GFG", "Geeks", "w"}3codebox"}  
      
        //iとjはrvariableの値を格納します
        //iは単一の文字列の合計のインデックスを格納します
        //jは与えられた配列の単一の文字列を格納します
    for i, j:= range rvariable { 
       fmt.Println(i, j)  
    } 
    
}

出力:

0 GFG
1 Geeks
2 w3codebox

5. 文字列に対してforループを使用: forループは文字列のUnicodeコードポイントを巡回できます。

文法:

for index, chr:= range str{
     // 文..
}

ここでは、インデックスはUTF-8エンコードされたコードポイントの最初のバイトを格納する変数であり、chrはは与えられた文字列の文字を格納する変数であり、str文字列です。

package main
import "fmt"
func main() {
    // 文字列はforループの範囲として
    for i, j := range "XabCd" {
        fmt.Printf("%U のインデックス値が %d\n", j, i)
    }
}

出力:

U+0058 のインデックス値が 0
U+0061 のインデックス値が 1
U+0062 のインデックス値が 2
U+0043 のインデックス値が 3
U+0064 のインデックス値が 4

6. mapに対してforループを使用: forループは巡回できますmapのキーと値のペア。

文法:

for key, value := range map { 
     // 文.. 
}
package main
import "fmt"
func main() {
    
        22
        33: "GFG",
        44: "w3codebox",
    }
    for key, value := range mmap {
        fmt.Println(key, value)
    }
}

出力:

22 Geeks
33 GFG
44 w3codebox

7. Forチャネル: forループは、チャネルに送信された順序の値を閉じるまで巡回できます。

文法:

for item := range Chnl { 
   // 文..
}
package main
import "fmt"
func main() {
    // channelの使用
    chnl := make(chan int)
    go func() {
        chnl <- 100
        chnl <- 1000
        chnl <- 10000
        chnl <- 100000
        close(chnl)
    }()
    for i := range chnl {
        fmt.Println(i)
    }
}

出力:

100
1000
10000
100000

重要な事項:

  • forループの3つの文では括弧を使用しないことです。

  • forループでは大括弧は必須です。

  • 左括弧はpost文のある行と同じ行に配置されるべきです。

  • 配列、文字列、スライス、またはマップ集合が空の場合、forループはエラーを投げずにそのプロセスを続行します。つまり、配列、文字列、スライス、またはマップがnilの場合、forループの反復回数は0です。