引入#
控制語句分類:
- 順序結構
- 分支結構
- 循環結構
分支結構#
if 分支#
單分支#
基本語法
if 條件表達式 {
邏輯代碼
}
只有條件表達式為 true 時,才執行 {} 的邏輯代碼
- 條件表達式兩邊可以加 (),建議不加
- If 和條件表達式中間必須有空格
- {} 必須要有
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 滿足表達式時,直接執行對應的語句塊並結束運行,不再繼續執行 *
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