Go語言for循環(huán)是一種重復(fù)控制語句,它使我們可以編寫執(zhí)行特定次數(shù)的循環(huán)。在Go語言中,此for循環(huán)可以以不同的形式使用,形式包括:
1.簡(jiǎn)單的for循環(huán)我們?cè)谄渌幊陶Z言(例如C,C ++,Java,C#等)中使用的相似。
語法:
for initialization; condition; post{
// 語句....
}這里,
在初始化(initialization)語句是可選的,用于循環(huán)開始之前執(zhí)行。初始化語句始終位于簡(jiǎn)單的語句中,例如變量聲明,遞增或賦值語句或函數(shù)調(diào)用。
條件(condition)語句包含一個(gè)布爾表達(dá)式,該表達(dá)式在循環(huán)的每次迭代開始時(shí)計(jì)算。如果條件語句的值為true,則執(zhí)行循環(huán)。
post語句在for循環(huán)體之后執(zhí)行。在post語句之后,條件語句再次計(jì)算條件語句的值是否為false,然后循環(huán)結(jié)束。
//使用for循環(huán)
package main
import "fmt"
//主函數(shù)
func main() {
// for 循環(huán)
//這個(gè)循環(huán)在i = 0時(shí)開始執(zhí)行,直到i<4條件為真
//post語句是i++
for i := 0; i < 4; i++{
fmt.Printf("nhooo\n")
}
}輸出:
nhooo nhooo nhooo nhooo
2.將for循環(huán)作為無限循環(huán):通過從for循環(huán)中刪除所有三個(gè)表達(dá)式,for循環(huán)也可用作無限循環(huán)。如果用戶未在for循環(huán)中編寫條件語句,則意味著條件語句為true,并且循環(huán)進(jìn)入無限循環(huán)。
語法:
for{
// 語句...
}// 使用無限循環(huán)
package main
import "fmt"
func main() {
// 無限循環(huán)
for {
fmt.Printf("nhooo\n")
}
}輸出:
nhooo nhooo nhooo nhooo nhooo nhooo nhooo nhooo nhooo nhooo ...........
3. for循環(huán)用作while循環(huán): for循環(huán)也可以用作while循環(huán)。執(zhí)行此循環(huán),直到給定條件為真為止。當(dāng)給定條件的值為false時(shí),循環(huán)結(jié)束。
語法:
for condition{
//語句..
}//for循環(huán)與while循環(huán)相同
package main
import "fmt"
func main() {
//while循環(huán)
//for循環(huán)執(zhí)行到
//i <3條件為真
i:= 0
for i < 3 {
i += 2
}
fmt.Println(i)
}輸出:
4
4. for循環(huán)中的簡(jiǎn)單范圍:您也可以在for循環(huán)中使用范圍。
語法:
for i, j:= range rvariable{
// 語句..
}這里,
i和j是分配迭代值的變量。它們也稱為迭代變量。
第二個(gè)變量,即j是可選的。
范圍表達(dá)式在循環(huán)開始之前被評(píng)估一次。
package main
import "fmt"
func main() {
//這里rvariable是一個(gè)數(shù)組
rvariable:= []string{"GFG", "Geeks", "nhooo"}
//i和j存儲(chǔ)rvariable的值
//i存儲(chǔ)單個(gè)字符串和的索引號(hào)
//j存儲(chǔ)給定數(shù)組的單個(gè)字符串
for i, j:= range rvariable {
fmt.Println(i, j)
}
}輸出:
0 GFG 1 Geeks 2 nhooo
5.對(duì)字符串使用for循環(huán): for循環(huán)可以遍歷字符串的Unicode代碼點(diǎn)。
語法:
for index, chr:= range str{
// 語句..
}在這里,索引是存儲(chǔ)UTF-8編碼代碼點(diǎn)的第一個(gè)字節(jié)的變量,而chr是存儲(chǔ)給定字符串的字符的變量,而str是字符串。
package main
import "fmt"
func main() {
// 字符串作為for循環(huán)中的范圍
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.對(duì)于map使用for循環(huán): for循環(huán)可以遍歷map的鍵和值對(duì)。
語法:
for key, value := range map {
// 語句..
}package main
import "fmt"
func main() {
mmap := map[int]string{
22: "Geeks",
33: "GFG",
44: "nhooo",
}
for key, value := range mmap {
fmt.Println(key, value)
}
}輸出:
22 Geeks 33 GFG 44 nhooo
7. For通道: for循環(huán)可以遍歷通道上發(fā)送的順序值,直到關(guān)閉為止。
語法:
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
重要事項(xiàng):
在for循環(huán)的三個(gè)語句中不使用括號(hào)。
花括號(hào)在for循環(huán)中是必需的。
左括號(hào)應(yīng)與post語句所在的行相同。
如果數(shù)組,字符串,切片或map集合為空,則for循環(huán)不會(huì)拋出錯(cuò)誤并繼續(xù)其流程。換句話說,如果數(shù)組,字符串,切片或map為nil,則for循環(huán)的迭代次數(shù)為零。