引言
【1】流程控制的作用:
流程控制語句是用來控制程式中各語句執行順序的語句,可以把語句組合成能完成一定功能的小邏輯子產品。
【2】控制語句的分類:
控制語句分為三類:順序、選擇和循環。
“順序結構”代表“先執行a,再執行b”的邏輯。
“條件判斷結構”代表“如果…,則…”的邏輯。
“循環結構”代表“如果…,則再繼續…”的邏輯。
三種流程控制語句就能表示所有的事情!不信,你可以試試拆分你遇到的各種事情。這三種基本邏輯結構是互相支撐的,它們共同構成了算法的基本結構,無論怎樣複雜的邏輯結構,都可以通過它們來表達。是以任何一種進階語言都具備上述兩種結構。
本章是大家真正進入程式設計界的“門票”。
【3】流程控制的流程:
if分支
單分支
【1】基本文法
if 條件表達式 {
邏輯代碼
}
當條件表達式為ture時,就會執行得的代碼。
PS:條件表達式左右的()可以不寫,也建議不寫
PS:if和表達式中間,一定要有空格
PS:在Golang中,{}是必須有的,就算你隻寫一行代碼。
【2】代碼練習:
package main
import "fmt"
func main() {
//實作功能:如果庫存小于30個,提示:庫存不足:
// var count int = 100
//單分支:
// if count < 30 {
// fmt.Println("對不起,庫存不足!")
// }
//if後面表達式,傳回結果一定是true或者false,
//如果傳回結果為true的話,那麼{}中的代碼就會執行
//如果傳回結果為false的話,那麼{}中的代碼就不會執行
//if後面一定要有空格,和條件表達式分隔開來
//{}一定不能省略
//條件表達式左右的()是建議省略的
//在golang裡,if後面可以并列的加入變量的定義:
if count := 20; count < 30 {
fmt.Println("對不起,庫存不足!")
}
}
雙分支
【1】基本文法
if 條件表達式 {
邏輯代碼1
} else {
邏輯代碼2
}
當條件表達式成立,即執行邏輯代碼1,否則執行邏輯代碼2。{}也是必須有的。
PS:下面的格式是錯誤的:
if 條件表達式 {
邏輯代碼1
}
else {
邏輯代碼2
}
PS:空格加上,美觀規範
【2】代碼練習:
package main
import "fmt"
func main() {
//實作功能:如果口罩的庫存小于30個,提示:庫存不足,否則提示:庫存充足
//定義口罩的數量:
var count int = 80
if count < 30 {
fmt.Println("對不起,庫存不足!")
} else {
fmt.Println("庫存充足")
}
//雙分支一定會二選一走其中一個分支。
}
多分支
【1】基本文法
if 條件表達式1 {
邏輯代碼1
} else if 條件表達式2 {
邏輯代碼2
}
.......
else {
邏輯代碼n
}
【2】代碼練習:
package main
import "fmt"
func main() {
//實作功能:根據給出的學生分數,判斷學生的等級:
// >=90 -----A
// >=80 -----B
// >=70 -----C
// >=60 -----D
// <60 -----E
//方式1:利用if單分支實作:
//定義一個學生的成績:
var score int = 19
// if score > 90 {
// fmt.Println("您的成績為A級别")
// }
// if score >= 80 && score < 90 {
// fmt.Println("您的成績為B級别")
// }
// if score >= 70 && score < 80 {
// fmt.Println("您的成績為C級别")
// }
// if score >= 60 && score < 70 {
// fmt.Println("您的成績為D級别")
// }
// if score < 60 {
// fmt.Println("您的成績為E級别")
// }
//上面方式1利用多個單分支拼湊出多個選擇,多個選擇是并列的,依次從上而下順序執行,即使走了第一個分支,那麼其它分支也是需要判斷
//方式2:多分支:優點:如果已經走了一個分支了,那麼下面的分支就不會再去判斷執行了
if score > 90 {
fmt.Println("您的成績為A級别")
} else if score >= 80 {
fmt.Println("您的成績為B級别")
} else if score >= 70 {
fmt.Println("您的成績為C級别")
} else if score >= 60 {
fmt.Println("您的成績為D級别")
} else {
fmt.Println("您的成績為E級别")
}
}
switch分支
【1】基本文法:
switch 表達式 {
case 值1,值2,.….:
語句塊1
case 值3,值4,...:
語句塊2
....
default:
語句塊
}
【2】代碼練習:
package main
import "fmt"
func main() {
//實作功能:根據給出的學生分數,判斷學生的等級:
// >=90 -----A
// >=80 -----B
// >=70 -----C
// >=60 -----D
// <60 -----E
//給出一個學生分數:
//根據分數判斷等級:
//switch後面是一個表達式,這個表達式的結果依次跟case進行比較,滿足結果的話就執行冒号後面的代碼。
//default是用來“兜底”的一個分支,其它case分支都不走的情況下就會走default分支
//default分支可以放在任意位置上,不一定非要放在最後。
var score int = -10
switch score / 10 {
case 10:
fmt.Println("您的成績為A級别")
case 9:
fmt.Println("您的成績為B級别")
case 8:
fmt.Println("您的成績為C級别")
case 7:
fmt.Println("您的成績為D級别")
case 6:
fmt.Println("您的成績為E級别")
case 5:
fmt.Println("您的成績為E級别")
case 4:
fmt.Println("您的成績為E級别")
case 3:
fmt.Println("您的成績為E級别")
case 2:
fmt.Println("您的成績為E級别")
case 1:
fmt.Println("您的成績為E級别")
case 0:
fmt.Println("您的成績為E級别")
default :
fmt.Println("您的成績有誤")
}
}
參考源碼:「連結」
參考原文:cyz