辦公室現(xiàn)代簡約裝修效果圖武漢seo服務
之前我學過C、Java、Python語言時總結(jié)的經(jīng)驗:
- 先建立整體框架,然后再去摳細節(jié)。
- 先Know how,然后know why。
- 先做出來,然后再去一點點研究,才會事半功倍。
- 適當?shù)泥駠魍虠棥R驗樗罁改硞€知識點很浪費時間的。
- 對于GO語言,切記遵守語法格式規(guī)則。(例如python語言、例如SpringBoot框架等)
解釋:某些知識點,就是很難了解,那么先做出來,然后繼續(xù)向前學習,可能在某個時間點我們就會恍然大悟。
07【保姆級】-GO語言的程序流程控制【if switch for while 】
- 一、 分支控制(if else )
- 二、分支控制 switch
- 2.1 基本介紹
- 2.2 switch 和if 的比較
- 三、for循環(huán)
- 3.1 語法格式
- 四、break和continue跳轉(zhuǎn)控制語句
一、 分支控制(if else )
基本語法:
if 條件表達式 {代碼塊
}//說明:當條件表達式為true, 則執(zhí)行{}中的代碼。
案例:判斷輸入的年齡,是否大于18歲。
var age intfmt.Println("請輸入你的年齡:")fmt.Scanln(&age)if age > 18 {fmt.Println("你年齡大于18歲啦")} else {fmt.Println("你年齡小于18歲啦")}
Golang支持在if中,直接定義一個變量:
var age intfmt.Println("請輸入你的年齡:")fmt.Scanln(&age)if age > 18 {fmt.Println("你年齡大于18歲啦")} else {fmt.Println("你年齡小于18歲啦")}
二、分支控制 switch
2.1 基本介紹
- Switch語句用于基于不同條件執(zhí)行不同動作,每一個case分支都是唯一的,從上到下逐一測試,知道匹配為止。
- switch的執(zhí)行的流程是,先執(zhí)行表達式得到值,然后和case的表達式進行比較,如果相等就匹配到,然后執(zhí)行對應的case的語句塊,然后退出switch控制
- 如果switch的表達式的值都沒有和任何case的表達式匹配成功,則執(zhí)行default的語句。執(zhí)行后退出switch的控制。最后的default語句不是必須的
- Golang的case后的表達式可以有多個,使用逗號間隔。
- golang中的case語句塊不需要寫break,因為默認會有,即使在默認情況下當執(zhí)行case語句塊后,就直接退出switch控制結(jié)構(gòu)。
- case/switch后是一個表達式(即:常量值、變量、一個有返回值的函數(shù)等都可以的)
- case后的各個表達式的值的數(shù)據(jù)類型,必須和switch的表達式數(shù)據(jù)類型一致
- case后面可以帶多個表達式,使用逗號間隔。比如case 表達式1,表達式2…
- case后面的表達式如果是常量值(字面量),則要求不能重復
- switch后面可以不帶表達式,類似 if else 分支來使用。
- Switch后也可以直接聲明、定義一個變量,分號結(jié)束(不推薦)
- switch 穿透 fallthrough,如果在case語句塊后增加 fallthrough,則會繼續(xù)執(zhí)行下一個case,也叫switch穿透。
- Type Swtich:swtich語句還可以被用于type-switch 來判斷某個interface 變量中實際指向的變量類型
2.2 switch 和if 的比較
- 如果判斷的具體數(shù)量不多,而且符合整數(shù)、浮點數(shù)、字符、字符串這幾種類型。建議使用swtich語句,簡潔高效
- 其他情況:對區(qū)間判斷 和結(jié)果為bool類型的判斷,使用if,if的使用范圍更廣。
三、for循環(huán)
- 將一個循環(huán)放在另一個循環(huán)體內(nèi),就形成了嵌套循環(huán)。在外邊的 for 稱為外層循環(huán)在里面的 for循環(huán)稱為內(nèi)層循環(huán)。【建議一般使用兩層,最多不要超過 3 層】
- 實質(zhì)上,嵌套循環(huán)就是把內(nèi)層循環(huán)當成外層循環(huán)的循環(huán)體。當只有內(nèi)層循環(huán)的循環(huán)條件為 jalse時,才會完全跳出內(nèi)層循環(huán),才可結(jié)束外層的當次循環(huán),開始下一次的循環(huán)。
- 外層循環(huán)次數(shù)為 m 次,內(nèi)層為 n 次,則內(nèi)層循環(huán)體實際上需要執(zhí)行 m*n 次
3.1 語法格式
for 循環(huán)變量初始化;循環(huán)條件;循環(huán)變量迭代{循環(huán)操作(語句)
}
對上面的語法格式說明:
- for循環(huán),四要素
- 循環(huán)變量的初始化
- 循環(huán)條件
- 循環(huán)操作,也就是循環(huán)體
- 循環(huán)變量迭代。
- 細節(jié):
- 循環(huán)條件是返回一個布爾值的表達式
- for循環(huán)的第二種使用方式:
for 循環(huán)判斷條件{
// 循環(huán)語句
}
- 循環(huán)的第三種方式。
for {
// 循環(huán)語句
}
寫法等價于 for ; ; {} 。是一個無限循環(huán),通常需要配合 break語句使用。
- golang 提供了 for-range的方式,可以方便遍歷字符串和數(shù)組。
// 傳統(tǒng)方式
var star string = "abcdedfg"
for i :=0; i < len(str); i++ {fmt.printf("%c \n",str[i]) // 使用坐標
}// 使用 for - range方式var str string = "abcdefg"for index, val := range str {fmt.Printf("index = %d,val=%c \n", index, val)}
// 其中“index”獲取字符串的下標,然后通過下標獲取字符后交給val。進行打印/*index = 0,val=aindex = 1,val=bindex = 2,val=cindex = 3,val=dindex = 4,val=eindex = 5,val=findex = 6,val=g*/// 其實index和val就是定義的變量名for i, v := range str {fmt.Printf("index = %d,val=%c \n", i, v)}
四、break和continue跳轉(zhuǎn)控制語句
兩者區(qū)別:
- break:跳出循環(huán)。
- contunue結(jié)束本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)。