go基礎筆記-程式流程控制
阿新 • • 發佈:2020-07-24
單分支控制 if 條件表示式 { 執行程式碼塊 } 案例: package main import ( "fmt" ) func main() { var age int = 19 if age > 18 { fmt.Println("大於18") } } 案例:宣告兩個float64型變數並賦值,判斷如果第一個數大於10.0,並且第2個數小於20.0,就列印兩個數之和。 package main import ( "fmt" ) func main() { var n3 float64 = 11.0 var n4 float64= 17.0 if n3 > 10.0 && n4 < 20.0 { fmt.Println("和=",(n3+n4)) } } 案例:判斷一個年份是否是閏年,閏年的判斷條件是符合下面二者之一: (1)年份能被4整除,但不能被100整除; (2)年份能被400整除。 package main import ( "fmt" ) func main() { var year int = 2020 if (year % 4 == 0 && year % 100 !=0 ) || year % 400 == 0{ fmt.Println(year,"是閏年") } } 雙分支控制 if 條件表示式 { 執行程式碼塊1 } else { 執行程式碼塊2 } 案例: package main import ( "fmt" ) func main() { var age int = 17 if age > 18 { fmt.Println("大於18") } else { fmt.Println("小於18") } } 多分支控制 if 條件表示式 { 執行程式碼塊1 } else if { 執行程式碼塊2 } else { 執行程式碼塊3 } 案例: package mainimport ( "fmt" ) func main() { var score int = 99 if score == 100 { fmt.Println("=100") } else if score > 80 && score <= 99 { fmt.Println(">80&&<=90") } else if score >=60 && score <= 80 { fmt.Println(">=60 && <=80") } else { fmt.Println("<=60") } } 案例:下面的案例是錯誤的寫法,因為只會輸出 ">9" package main import ( "fmt" ) func main() { var n int = 10 if n > 9 { fmt.Println(">9") } else if n > 6 && n <= 9 { fmt.Println(">6&&<=9") } else if n >=3 && n <= 6 { fmt.Println(">=3 && <=6") } else { fmt.Println("<=3") } } 巢狀分支基本語法 if 條件表示式 { if 條件表示式 { 執行程式碼塊1 } else { 執行程式碼塊2 } } 案例:出票系統:根據淡旺季的月份和年齡,列印票價 4-10月 旺季: 成人(18-60):60 兒童(<18):半價 老人(>60):1/3 淡季: 成人:40 其他:20 package main import ( "fmt" ) func main() { var month byte var age byte var price float64 = 60.0 fmt.Println("請輸入月份") fmt.Scanln(&month) fmt.Println("請輸入年齡") fmt.Scanln(&age) if month >=4 && month <=10 { if age > 60 { fmt.Printf("%v月 票價 %v 年齡 %v ",month,price / 3 ,age) } else if age >=18 { fmt.Printf("%v月 票價 %v 年齡 %v ",month,price,age) } else { fmt.Printf("%v月 票價 %v 年齡 %v ",month,price / 2,age) } } else { if age >=18 && age < 60 { fmt.Println("淡季成人票價40") } else { fmt.Println("淡季兒童和老人票價20") } } } switch語句用於基於不同條件執行不同動作,每一個case分支都是唯一的,從上到下逐一測試,直到匹配為止; swith使用細節: case後面是一個表示式(即:常量值、變數、一個有返回值的函式) case後的各表示式的值的資料型別必須和swith表示式資料型別一致; case後面可以帶多個表示式,使用逗號間隔,比如case 表示式1,表示式2 case後面的表示式如果是常量值,即要求不能重複; case後面不需要帶break; defaut語句不是必須的; swith後面可以不帶表示式,類似if else分支來使用; swith後面也可以直接申明定義一個變數,分號結束,不推薦; switch之fallthrough(穿透)也就是執行某個case後,還會再執行它接下來的一個case Type switch :swich語句還可以被用於type-switch來判斷某個Interface變數中實際指向的變數型別; 迴圈控制基本語法 1)for 迴圈變數初始化;迴圈條件;迴圈變數迭代 {= 迴圈操作 } 2)for 迴圈條件 { 迴圈操作 } 3)for { 迴圈操作 break } for迴圈的使用細節: (1)golang提供for-range方式,可以方便的遍歷字串和陣列;(是按照字元來遍歷的,而不是位元組) (2)利用for實現while和do while (6)跳轉語句goto goto語句可以無條件地轉移到程式中指定的行; goto語句通常與條件語句配合使用。可用來實現條件轉移,跳出迴圈體等功能; 在go程式設計中一般不主張使用goto語句,以避免造成程式流程的混亂; (7)跳轉控制語句return 表示跳出所在的方法或函式;