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

Manuale di base Golang

Strutture di controllo Golang

Funzioni e metodi Golang

Struttura Golang

Tagli e array Golang

Stringhe Golang (String)

Puntatori Golang

Interfaccia Golang

Concordanza Golang

Eccezioni Golang

Articoli vari Golang

Estrazione del linguaggio Go (for loop)

Il ciclo for nel linguaggio Go è una struttura di controllo di ripetizione che ci permette di scrivere un ciclo che si esegue un numero specifico di volte. Nel linguaggio Go, questo ciclo for può essere utilizzato in diverse forme, tra cui:

1. Un semplice ciclo forSimile a quello che usiamo in altri linguaggi di programmazione (ad esempio C, C++, Java, C# ecc.)

Sintassi:

for inizializzazione; condizione; post{
       // 语句....
}

这里,

  • ininizializzazione语句是可选的,用于循环开始之前执行。初始化语句始终位于简单的语句中,例如变量声明,递增或赋值语句或函数调用。

  • 条件(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")   
    } 
    
}

Output:

w3codebox
w3codebox
w3codebox
w3codebox

2.将for循环作为无限循环:通过从for循环中删除所有三个表达式,for循环也可用作无限循环。如果用户未在for循环中编写条件语句,则意味着条件语句为true,并且循环进入无限循环。

Sintassi:

for{
     // 语句...
}
// 使用无限循环  
package main 
  
import "fmt"
   
func main() { 
      
    // 无限循环 
    for { 
      fmt.Printf("w3codebox\n")   
    } 
    
}

Output:

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

3. for循环用作while循环: for循环也可以用作while循环。执行此循环,直到给定条件为真为止。当给定条件的值为false时,循环结束。

Sintassi:

for condition{
    //语句..
}
//for循环与while循环相同 
package main 
  
import "fmt"
   
func main() { 
      
      //while循环
      //for循环执行到
      //i <3条件为真
    i:= 0 
    for i < 3 { 
       i += 2 
    } 
  fmt.Println(i)  
}

Output:

4

4. for循环中的简单范围:您也可以在for循环中使用范围。

Sintassi:

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

这里,

  • 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)  
    } 
    
}

Output:

0 GFG
1 Geeks
2 w3codebox

5. Per la stringa utilizzare il ciclo for: Il ciclo for può iterare attraverso i punti Unicode della stringa.

Sintassi:

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

qui, l'indice è la variabile che memorizza il primo byte del codice di encoding UTF-8, mentrechr èè la variabile che memorizza i caratteri della stringa data, mentrestrè una stringa.

package main
import "fmt"
func main() {
    // La stringa come intervallo del ciclo for
    for i, j := range "XabCd" {
        fmt.Printf("%U ha un valore di indice di %d\n", j, i)
    }
}

Output:

U+0058 ha un valore di indice di 0
U+0061 ha un valore di indice di 1
U+0062 ha un valore di indice di 2
U+0043 ha un valore di indice di 3
U+0064 ha un valore di indice di 4

6. Per map utilizzare il ciclo for: Il ciclo for può iteraremapla coppia di chiave e valore.

Sintassi:

for key, value := range map { 
     // Statement... 
}
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)
    }
}

Output:

22 Geeks
33 GFG
44 w3codebox

7. Per il canale: For Il ciclo for può iterare attraverso i valori ordinati inviati sul canale fino a quando non viene chiuso.

Sintassi:

for item := range Chnl { 
   // Statement...
}
package main
import "fmt"
func main() {
    // Uso del canale
    chnl := make(chan int)
    go func() {
        chnl <- 100
        chnl <- 1000
        chnl <- 10000
        chnl <- 100000
        close(chnl)
    }()
    for i := range chnl {
        fmt.Println(i)
    }
}

Output:

100
1000
10000
100000

Punti importanti:

  • Non si utilizzano parentesi nei tre statement del ciclo for.

  • Le parentesi graffe sono obbligatorie nel ciclo for.

  • La parentesi aperta dovrebbe essere sulla stessa riga della dichiarazione post.

  • Se l'array, la stringa, la slice o la raccolta map è vuota, il ciclo for non lancia un errore e continua il suo flusso. In altre parole, se l'array, la stringa, la slice o la map è nil, il numero di iterazioni del ciclo for è zero.