banner
音小董

哩哔哩哔

这世上的热闹出自孤单

第5章:流程控制

引入#

控制語句分類:

  1. 順序結構
  2. 分支結構
  3. 循環結構
    控制流程.png

分支結構#

if 分支#

單分支#

基本語法
if 條件表達式 {
邏輯代碼
}
只有條件表達式為 true 時,才執行 {} 的邏輯代碼

  1. 條件表達式兩邊可以加 (),建議不加
  2. If 和條件表達式中間必須有空格
  3. {} 必須要有
package main  
  
import "fmt"  
  
func main() {  
var a int = 25  
var b int = 15  
if a > b {  
fmt.Println("a大於b")  
}
//if後面可以用分號並列加入變量的定義
if a2 := 20; a2 < 10 {  
fmt.Println("a小於b")  
} 
}

運行結果:

a大於b

雙分支#

基本語法
if 條件表達式 {
邏輯代碼 1
} else {
邏輯代碼 2
}
* 當條件表達式為 true 時,執行邏輯代碼 1,否則執行邏輯代碼 2 *

func main() {  
if a := 10; a > 5 {  
fmt.Println("a大於5")  
} else {  
fmt.Println("a不大於5")  
}  
  
if b := 10; b > 15 {  
fmt.Println("b大於15")  
} else {  
fmt.Println("b不大於15")  
}  
}

運行結果:

a大於5
b不大於5

多分支#

基本語法
if 條件表達式 {
邏輯代碼 1
} else {
邏輯代碼 2
}
......
else {
邏輯代碼 n
}
* 依次執行,當有一個條件表達式為 true 時,直接執行對應的邏輯代碼並結束運行,不再繼續執行 *

package main  
  
import "fmt"  
  
func main() {  
var a int = 50  
if a > 10 {  
fmt.Println("a大於10")  
} else if a > 20 {  
fmt.Println("a大於20")  
} else if a > 30 {  
fmt.Println("a大於30")  
} else if a > 40 {  
fmt.Println("a大於40")  
} else {  
fmt.Println("以上都不對")  
}   
}

運行結果:

a大於10

switch 分支#

基本語法
switch 表達式 {
case 值 1, 值 2,......:
語句塊 1
Case 值 3, 值 4,......:
語句塊 2
......
default:
語句塊
}
* 依次執行,當有一個 case 滿足表達式時,直接執行對應的語句塊並結束運行,不再繼續執行 *
學生分數.png

package main  
  
import (  
"fmt"  
)  
  
func main() {  
var score int = 50  
switch score / 10 {  
case 10:  
fmt.Println("等級為A")  
case 9:  
fmt.Println("等級為A")  
case 8:  
fmt.Println("等級為B")  
case 7:  
fmt.Println("等級為C")  
case 6:  
fmt.Println("等級為D")  
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("成績有誤")  
}  
}

運行結果:

等級為E

循環結構#

for 循環#

基本語法
for (初始表達式;布爾表達式;迭代因子){
循環體;
}

package main  
  
import "fmt"  
  
func main() {  
//求和1+2+3+4+5  
//方法1  
var n1 int = 1  
var n2 int = 2  
var n3 int = 3  
var n4 int = 4  
var n5 int = 5  
var sum1 int  
sum1 += n1  
sum1 += n2  
sum1 += n3  
sum1 += n4  
sum1 += n5  
fmt.Println(sum1)  
//方法2  
var sum2 int  
for i := 1; i <= 5; i++ {  
sum2 += i  
}  
fmt.Println(sum2)  
}

for range#

可遍歷數組,切片,字符串,map 以及通道

基本語法
for key, val := range coll {

}

import "fmt"  
  
func main() {  
var str string = "mojito"  
//for i := 0; i < len(str); i++ {  
// fmt.Printf("%c \n",str[i])  
//}  
for i, value := range str {  
fmt.Printf("索引為:%d, 值為:%c \n", i, value)  
}  
}

運行結果:

索引為:0, 值為:m
索引為:1, 值為:o 
索引為:2, 值為:j 
索引為:3, 值為:i 
索引為:4, 值為:t 
索引為:5, 值為:o 

關鍵字#

break#

執行本次循環再跳出整個循環

package main  package main  
  
import "fmt"  
  
func main() {  
var sum1 int  
for i := 1; i <= 100; i++ {  
sum1 += i  
}  
fmt.Println(sum1)  
  
var sum2 int  
for j := 1; j <= 100; j++ {  
sum2 += j  
if sum2 > 300 {  
break  
}  
}  
fmt.Println(sum2)  
}

運行結果:

5050
325

continue#

跳出本次循環,再繼續後面的循環

import "fmt"  
  
func main() {  
//取1-100以內被6整除的數  
for i := 1; i <= 100; i++ {  
if i%6 != 0 {  
continue  
}  
fmt.Println(i)  
}  
}

運行結果:

6
12
18
24
30
36
42
48
54
60
66
72
78
84
90
96

goto#

跳到指定行執行

package main  
  
import "fmt"  
  
func main() {  
if 1 == 1 {  
goto a  
}  
fmt.Println("hello1")  
fmt.Println("hello2")  
fmt.Println("hello3")  
fmt.Println("hello4")  
fmt.Println("hello5")  
fmt.Println("hello6")  
fmt.Println("hello7")  
a:  
fmt.Println("hello8")  
}

運行結果:

hello8

return#

結束當前函數不繼續執行

package main  
  
import "fmt"  
  
func main() {  
for j := 1; j < 10; j++ {  
if j == 7 {  
return  
}  
fmt.Println(j)  
}  
fmt.Println("hello golang")  
}

運行結果:

1
2
3
4
5
6
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。