天天看點

第4章 流程控制-分支結構

作者:菜園子dz

引言

【1】流程控制的作用:

流程控制語句是用來控制程式中各語句執行順序的語句,可以把語句組合成能完成一定功能的小邏輯子產品。

【2】控制語句的分類:

控制語句分為三類:順序、選擇和循環。

“順序結構”代表“先執行a,再執行b”的邏輯。

“條件判斷結構”代表“如果…,則…”的邏輯。

“循環結構”代表“如果…,則再繼續…”的邏輯。

三種流程控制語句就能表示所有的事情!不信,你可以試試拆分你遇到的各種事情。這三種基本邏輯結構是互相支撐的,它們共同構成了算法的基本結構,無論怎樣複雜的邏輯結構,都可以通過它們來表達。是以任何一種進階語言都具備上述兩種結構。

本章是大家真正進入程式設計界的“門票”。

【3】流程控制的流程:

第4章 流程控制-分支結構

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

繼續閱讀