go流程控制代碼詳解
if
•Go里面if條件判斷語句中不需要括號,條件判斷語句里面允許聲明一個(gè)變量,任何在這里聲明的變量都可以在所有的條件分支中使用。
if x := 11; x > 10 { fmt.Println("x is greater than 10") } else { fmt.Println("x is less than 10") }
goto
•用goto跳轉(zhuǎn)到必須在當(dāng)前函數(shù)內(nèi)定義的標(biāo)簽,標(biāo)簽名是大小寫敏感的。
func myFunc() { i := 0 Here: //這行的第一個(gè)詞,以冒號結(jié)束作為標(biāo)簽 println(i) i++ goto Here //跳轉(zhuǎn)到Here去 }
for
•for是go中的唯一的循環(huán)結(jié)構(gòu),在go里面有以下幾種使用形式
//經(jīng)典的初始化/條件/后續(xù)形式的for循環(huán) for expression1; expression2; expression3 {} //帶單個(gè)循環(huán)條件,即忽略expression1和expression3: sum := 1 for ; sum < 1000; { sum += sum } //其中;也可以省略,那么就變成如下的代碼了,這就是while的功能。 for sum < 1000 {} //不帶條件的for循環(huán)將一直執(zhí)行,直到在循環(huán)體內(nèi)使用了break或者return來跳出循環(huán) for { fmt.Println("loop") break }
break和continue
•當(dāng)嵌套過深的時(shí)候,break可以配合標(biāo)簽使用,即跳轉(zhuǎn)至標(biāo)簽所指定的位置,break和continue還可以跟著標(biāo)號,用來跳到多重循環(huán)中的外層循環(huán)
for配合range可以用于讀取slice,map和數(shù)組的數(shù)據(jù)
•range 在數(shù)組和 slice 中都同樣提供每個(gè)項(xiàng)的索引和值。我們不需要索引的時(shí)候使用空值定義符_ 來忽略它,因?yàn)閷τ凇奥暶鞫幢徽{(diào)用”的變量, 編譯器會(huì)報(bào)錯(cuò)。有時(shí)候我們需要這個(gè)索引。
•range在map中迭代鍵值對
switch
//經(jīng)典的初始化/條件/后續(xù)形式的for循環(huán) for expression1; expression2; expression3 {} //帶單個(gè)循環(huán)條件,即忽略expression1和expression3: sum := 1 for ; sum < 1000; { sum += sum } //其中;也可以省略,那么就變成如下的代碼了,這就是while的功能。 for sum < 1000 {} //不帶條件的for循環(huán)將一直執(zhí)行,直到在循環(huán)體內(nèi)使用了break或者return來跳出循環(huán) for { fmt.Println("loop") break }
總結(jié)
以上所述是小編給大家介紹的go流程控制代碼詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
Go外部依賴包從vendor,$GOPATH和$GOPATH/pkg/mod查找順序
這篇文章主要介紹了Go外部依賴包vendor,$GOPATH和$GOPATH/pkg/mod下查找順序,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12詳解Go語言實(shí)現(xiàn)線性查找算法和二分查找算法
線性查找又稱順序查找,它是查找算法中最簡單的一種。二分查找,也稱折半查找,相比于線性查找,它是一種效率較高的算法。本文將用Go語言實(shí)現(xiàn)這兩個(gè)查找算法,需要的可以了解一下2022-12-12使用Go實(shí)現(xiàn)TLS服務(wù)器和客戶端的示例
本文主要介紹了Go實(shí)現(xiàn)TLS服務(wù)器和客戶端的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12