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

Golang 기본 강의

Golang 제어문

Golang 함수 & 메서드

Golang 구조체

Golang 슬라이스 & 배열

Golang 문자열(String)

Golang 포인터

Golang 인터페이스

Golang 병행

Golang 예외(Error)

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循环中删除所有三个表达式,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是分配迭代值的变量。它们也称为迭代变量。

  • 第二个变量,即j是可选的。

  • 范围表达式在循环开始之前被评估一次。

package main 
  
import "fmt"
func main() { 
      
    //这里rvariable是一个数组 
    rvariable:= []string{"GFG", "Geeks", "w3codebox"}  
      
        //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() {
    mmap := map[int]string{
        22: "Geeks"
        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 루프의 세 가지 문장에서는 괄호를 사용하지 않습니다.

  • for 루프에서 대괄호는 필수입니다.

  • 좌 괄호는 post 문이 있는 행과 동일해야 합니다.

  • 배열, 문자열, 슬라이스, 또는 map 집합이 비어 있으면 for 루프는 오류를 투척하지 않고 프로세스를 계속합니다. 다시 말해, 배열, 문자열, 슬라이스, 또는 map이 nil이면 for 루프의 반복 횟수는 0입니다.