for循环里的if语句中break_Go语言极简教程 - 第五篇 控制语句
if語句
語法
IfStmt = "if" [ SimpleStmt ";" ] Expression Block [ "else" ( IfStmt | Block ) ] .特點
- if后面的條件判斷表達式不需要小括號括起來。
- 左大括號{必須放在和if/else if同行的行尾。
- if后面可以帶一個簡單語句,該語句可以聲明新的變量并初始化或給已有變量賦值,新聲明的變量僅在該if分支、else if分支以及else分支可見。該簡單語句和后面的條件判斷表達式用“;”分隔。
- else if和else必須與上一個if分支的右大括號}在同一行。
- Go語言沒有條件運算符(也稱三目運算符,a>b?a:b)。此時只能用if else來替換。
最佳實踐
- 盡量減少if條件表達式的復雜度,以提高代碼可讀性。如果條件表達式邏輯較為復雜,可以將判斷邏輯放到一個函數(shù)里,該函數(shù)返回判斷結(jié)果。
- 盡可能的減少if語句的嵌套層次,嵌套層次越多,代碼可讀性就越差,可維護性也越低。可以在if分支內(nèi)使用return語句來提前結(jié)束函數(shù)執(zhí)行,減少if嵌套層次,使代碼結(jié)構(gòu)變得扁平。
優(yōu)化前代碼示例:
優(yōu)化后代碼示例:
switch語句
語法
SwitchStmt = ExprSwitchStmt | TypeSwitchStmt .ExprSwitchStmt = "switch" [ SimpleStmt ";" ] [ Expression ] "{" { ExprCaseClause } "}" .ExprCaseClause = ExprSwitchCase ":" StatementList .ExprSwitchCase = "case" ExpressionList | "default" .特點
- switch語句會根據(jù)傳入的參數(shù)檢測并執(zhí)行符合條件的case分支。
- 和if語句一樣,switch后面也可以帶一個簡單的初始化或賦值語句,語句中新聲明的變量該在switch語塊內(nèi)可見。
- switch條件表達式的值可以是任意支持相等比較運算的類型變量。
- switch支持default分支,當所有case分支都未被匹配到,則執(zhí)行default分支,default分支出現(xiàn)的位置和順序不影響case的分支條件判斷。
- switch后面的表達式是可選的。如果switch后面沒條件判斷表達式,則每個case子句的表達必須是條件判斷表達式,而不是一個值。
- 可以通過fallthough語句強制執(zhí)行下一個case分支,無論該case分支是否符合條件。
for語句
與其它語言不同,Go語言只支持一個循環(huán)結(jié)構(gòu)語法,即for語句。不像其它語言除for外有do, while以及foreach等豐富的循環(huán)結(jié)構(gòu)語法。
Go語言中for語句存在多種形式
形式一
ForClause = [ InitStmt ] ";" [ Condition ] ";" [ PostStmt ] .InitStmt = SimpleStmt .PostStmt = SimpleStmt .這種形式與其它語言的for循環(huán)結(jié)構(gòu)相同。
形式二
ForStmt = "for" [ Condition | ForClause | RangeClause ] Block .Condition = Expression .這種形式與其它語言的while(expr)循環(huán)結(jié)構(gòu)相同。
形式三
RangeClause = [ ExpressionList "=" | IdentifierList ":=" ] "range" Expression .這種形式與其它語言的foreach結(jié)構(gòu)相同。
break關(guān)鍵字
可以使用break關(guān)鍵字強制跳出for、switch、select語句的執(zhí)行。
在有多個嵌套層的for、switch、select結(jié)構(gòu)中,break跳出當前所在的嵌套層,也可以使用break Label跳出到外層。
continue關(guān)鍵字
continue關(guān)鍵字用于跳出for循環(huán)的本次迭代,直接跳到下一次迭代的PostStmt語句處開始執(zhí)行。
和break關(guān)鍵字一樣,在有多個嵌套層的for循環(huán)結(jié)構(gòu)中,continue跳到當前所在的for循環(huán)層,也可以使用continue Label跳出到外層。
標簽和跳轉(zhuǎn)
標簽語法
Label: Statement只能在函數(shù)內(nèi)部聲明Label
goto
語法
GotoStmt = "goto" Label .特點
- goto語句只能在函數(shù)內(nèi)部跳轉(zhuǎn)。
- goto語句不能跳過內(nèi)部變量聲明語句。
- goto語句只能跳到同級作用域或者上層作用域,不能跳到內(nèi)部作用域內(nèi)。
總結(jié)
以上是生活随笔為你收集整理的for循环里的if语句中break_Go语言极简教程 - 第五篇 控制语句的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web.xml文件位于web项目的目录结
- 下一篇: python采集_Python采集实例2