一、流程控制
程序設(shè)計語言的流程控住語句,用于設(shè)定計算執(zhí)行的次序,建立程序的邏輯結(jié)構(gòu)。可以說,流程控制語句是整個程序的骨架。
從根本上講,流程控制只是為了控制程序語句的執(zhí)行順序,一般需要與各種條件配合,因此,在各種流程中,會加入條件判斷語句。流程控制語句一般起以下3個作用:
- 選擇: 即根據(jù)條件跳轉(zhuǎn)到不同的執(zhí)行序列;
- 循環(huán),即根據(jù)條件反復(fù)執(zhí)行某個序列,當然每一次循環(huán)執(zhí)行的輸入輸出可能會發(fā)生變化;
- 跳轉(zhuǎn),即根據(jù)條件返回到某執(zhí)行序列。
go語言支持如下的幾種流程控制語句:
- 條件語句:所對應(yīng)的的關(guān)鍵字為if ,else和else if
- 選擇語句:所對應(yīng)的的關(guān)鍵字為switch,case和select
- 循環(huán)語句:所對應(yīng)的的關(guān)鍵字為for和range
- 跳轉(zhuǎn)語句:所對應(yīng)的的關(guān)鍵字為nreak,continue和goto
1.條件語句
1.1 if語句
s := "王思聰"
//if就是條件,條件通常都是關(guān)系運算符
if s == "王思聰" {
fmt.Println("天神下凡一垂四")
}
------此方法更加簡便-------------
//簡化但條件分支
if a := 128; a == 128 {
fmt.Println("a=10")
}
1.2 if ..,else語句
//第一種
a := 1
if a == 10 {
fmt.Println("a == 10")
} else if a > 10 {
fmt.Println("a > 10")
} else if a < 10 {
fmt.Println("a < 10")
}
//第二種(更加簡便)
b := 11
if b == 10 {
fmt.Println("b==10")
}
if b > 10 {
fmt.Println("b > 10")
}
if b < 10 {
fmt.Println("b < 10")
}
//if...else
if a := 8; a == 10 {
fmt.Println("a = 10")
} else if a > 10 {
fmt.Println("a > 10")
} else if a < 10 {
fmt.Println("a < 10")
} else {
fmt.Println("這是不可能的")
}
2.選擇語句
2.1 switch語句
var num int
fmt.Println("請按下你的樓層:")
fmt.Scan(&num)
switch num {
case 1:
fmt.Println("按下的是1樓")
break //go語言中保留了break關(guān)鍵字,跳出switch語言。但是語言內(nèi)部默認存在
case 2:
fmt.Println("按下的是2樓")
case 3:
fmt.Println("按下的是3樓")
fallthrough //不跳出switch語句,后面的無條件執(zhí)行,即輸入三層,會提示的按下3蹭四層
case 4:
fmt.Println("按下的是4樓")
default:
fmt.Println("按下的是xxxx樓")
}
- 案例補充
score := 85
switch { //可以沒有條件
case score > 90: //case后面可以放條件
fmt.Println("優(yōu)秀")
case score > 80:
fmt.Println("良好")
case score > 70:
fmt.Println("一般")
default:
fmt.Println("其他")
3. 循環(huán)語句
3.1 for循環(huán)語句
與多數(shù)語言不同的是,go語言的循環(huán)語句中只支持for關(guān)鍵字。且關(guān)鍵字for的基本用法與C近似。
- 語法格式 for 初始化條件 ; 判讀條件 ;變換條件{ // }
對1-100進行累加求和
sum := 0
for i := 1; i <= 100; i++ {
sum = sum + i
}
fmt.Println("sum =", sum)
3.2 range循環(huán)語句
str := "abc"
//通過for打印每個字符
for i := 0; i < len(str); i++ {
fmt.Printf("str[%d]=%c\n", i, str[i])
}
//使用range關(guān)鍵字:迭代打印每個元素,默認兩個返回值,一個是元素位置一個是元素本身
for i, data := range str {
fmt.Printf("str[%d]=%c\n", i, data)
}
//一個參數(shù)的使用
for i := range str { //第二個返回值,默認丟棄,返回元素的位置(下標)
fmt.Printf("str[%d]=%c\n", i, str[i])
}
4.跳轉(zhuǎn)語句
4.1 break和continue
在循環(huán)中,break的操作是跳出當前循環(huán),continue是跳出本次循環(huán)。區(qū)別:break可以用在for,switch,select中,而continue僅能用于for循環(huán)
i := 0
for { //for后面不寫任何東西,這個循環(huán)條件永遠為真
i++
time.Sleep(time.Second) //延遲一秒
if i == 7 {
break //跳出循環(huán),如果嵌套多個循環(huán),跳出最近的那個循環(huán)
//continue //跳出本次循環(huán),下一次繼續(xù)
}
fmt.Println("i =", i)
}