Go語言for循環(huán)是一種重復(fù)控制語句,它使我們可以編寫執(zhí)行特定次數(shù)的循環(huán)。在Go語言中,此for循環(huán)可以以不同的形式使用,形式包括:
1.簡單的for循環(huán)我們在其他編程語言(例如C,C ++,Java,C#等)中使用的相似。
語法:
for initialization; condition; post{ // 語句.... }
這里,
在初始化(initialization)語句是可選的,用于循環(huán)開始之前執(zhí)行。初始化語句始終位于簡單的語句中,例如變量聲明,遞增或賦值語句或函數(shù)調(diào)用。
條件(condition)語句包含一個布爾表達(dá)式,該表達(dá)式在循環(huán)的每次迭代開始時計算。如果條件語句的值為true,則執(zhí)行循環(huán)。
post語句在for循環(huán)體之后執(zhí)行。在post語句之后,條件語句再次計算條件語句的值是否為false,然后循環(huán)結(jié)束。
//使用for循環(huán) package main import "fmt" //主函數(shù) func main() { // for 循環(huán) //這個循環(huán)在i = 0時開始執(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)中刪除所有三個表達(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時,循環(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)中的簡單范圍:您也可以在for循環(huán)中使用范圍。
語法:
for i, j:= range rvariable{ // 語句.. }
這里,
i和j是分配迭代值的變量。它們也稱為迭代變量。
第二個變量,即j是可選的。
范圍表達(dá)式在循環(huán)開始之前被評估一次。
package main import "fmt" func main() { //這里rvariable是一個數(shù)組 rvariable:= []string{"GFG", "Geeks", "nhooo"} //i和j存儲rvariable的值 //i存儲單個字符串和的索引號 //j存儲給定數(shù)組的單個字符串 for i, j:= range rvariable { fmt.Println(i, j) } }
輸出:
0 GFG 1 Geeks 2 nhooo
5.對字符串使用for循環(huán): for循環(huán)可以遍歷字符串的Unicode代碼點(diǎn)。
語法:
for index, chr:= range str{ // 語句.. }
在這里,索引是存儲UTF-8編碼代碼點(diǎn)的第一個字節(jié)的變量,而chr是存儲給定字符串的字符的變量,而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.對于map使用for循環(huán): for循環(huán)可以遍歷map的鍵和值對。
語法:
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)的三個語句中不使用括號。
花括號在for循環(huán)中是必需的。
左括號應(yīng)與post語句所在的行相同。
如果數(shù)組,字符串,切片或map集合為空,則for循環(huán)不會拋出錯誤并繼續(xù)其流程。換句話說,如果數(shù)組,字符串,切片或map為nil,則for循環(huán)的迭代次數(shù)為零。