Golang 的 for 語句和其他語言的有相同的地方,也有不一樣的地方。它存在如下三種基本形式:
// 和 C 語言的 for 類似
for init; condition; post { }
// 和 C 語言的 while 類似,所以,Go 中沒有 while /do while
for condition { }
// 和 C 語言的 for(;;) 或 while(true) 類似,用於死迴圈
for { }
除此之外,Go 還有類似一些語言中的 foreach 迴圈:for ... range ... 此時,range 後面只能是:array、slice、map 或 channel
for .. range .. 它也有幾種形式
1. 對於 array、slice 和 map 來說,for 後面可以接收 1 個或 2 個值,第一個值是 索引或 key,第二個值是 value,我們可以只需要第一個值,如:
for i := range slice {}
或只需要第二個值:
for _, v := range slice {}
2. 如果 range 後面是 channel,則 for 後面只接收一個值,如:
for c := range ch {}
3. 還有一種是 Go 後面版本加的,即 for 後面可以不接受任何值,只是用來迴圈,如:
for range slice {}
Go 的語法變遷,可以看看此文:Go1到Go1.10的語法變遷 https://mp.weixin.qq.com/s/dRHLdt7_IfPmhGf_8jD9vQ
Golang 的 for 語句和其他語言的有相同的地方,也有不一樣的地方。它存在如下三種基本形式:
for 的幾種形式// 和 C 語言的 for 類似
for init; condition; post { }
// 和 C 語言的 while 類似,所以,Go 中沒有 while /do while
for condition { }
// 和 C 語言的 for(;;) 或 while(true) 類似,用於死迴圈
for { }
for .. range ..除此之外,Go 還有類似一些語言中的 foreach 迴圈:for ... range ... 此時,range 後面只能是:array、slice、map 或 channel
for .. range .. 它也有幾種形式
1. 對於 array、slice 和 map 來說,for 後面可以接收 1 個或 2 個值,第一個值是 索引或 key,第二個值是 value,我們可以只需要第一個值,如:
for i := range slice {}
或只需要第二個值:
for _, v := range slice {}
2. 如果 range 後面是 channel,則 for 後面只接收一個值,如:
for c := range ch {}
3. 還有一種是 Go 後面版本加的,即 for 後面可以不接受任何值,只是用來迴圈,如:
for range slice {}
Go 的語法變遷,可以看看此文:Go1到Go1.10的語法變遷 https://mp.weixin.qq.com/s/dRHLdt7_IfPmhGf_8jD9vQ