前面我們寫的程式都是從第一行開始執行,一直執行到末尾,一行一行的順序執行下來,這種執行結構叫順序執行結構。
GO語言除了有順序結構,還有選擇結構,迴圈結構。
- 順序結構:程式按順序執行,不發生跳轉。
- 選擇結構:依據是否滿足條件,有選擇的執行相應功能。
- 迴圈結構:依據條件是否滿足,迴圈多次執行某段程式碼。
下面先講解選擇結構:
1: 01if條件語句
package main
import (
"fmt"
)
func main0101() {
//if 表示式
//{
//程式碼體
//}
var score int
fmt.Scan(&score)
//if score > 700 {
// fmt.Println("我要上清華")
//}
//if score > 700 {
// fmt.Println("我要上清華")
//} else {
// fmt.Println("我要上史丹佛")
//}
if score > 700 {
fmt.Println("我要上清華")
} else if score > 680 {
fmt.Println("我要上北大")
} else if score > 650 {
fmt.Println("我要上人大")
} else {
fmt.Println("我要上史丹佛")
}
var m int
}
2:if語句巢狀
package main
import "fmt"
func main0201() {
var score int
fmt.Scan(&score)
if score > 700 {
fmt.Println("我要上清華")
if score > 720 {
fmt.Println("我要學挖掘機")
} else if score > 710 {
fmt.Println("我要學美容美髮")
} else {
fmt.Println("我要學習汽修")
}
} else if score > 680 {
fmt.Println("我要上北大")
if score > 690 {
fmt.Println("我要學盜墓")
} else {
fmt.Println("我要學習go語言")
}
}
}
//三隻小豬稱體重 通過鍵盤輸入三隻小豬體重 找到最重的
func main() {
var a, b, c int
//10 8 12
fmt.Scan(&a, &b, &c)
if a > b {
//a重
if a > c {
fmt.Println("a最重")
} else {
fmt.Println("c最重")
}
} else {
//b重
if b > c {
fmt.Println("b最重")
} else {
fmt.Println("c最重")
}
}
}
//根據分數 >=90 A >=80 B >=70 C >=60 D 不及格 E
3:switch分支語句
package main
import "fmt"
func main0301() {
//switch 變數(表示式) {
//case 值1:
// 程式碼體
// fallthrough
//case 值2:
// 程式碼體
//default:
// 程式碼體
//}
//根據分數 >=90 A >=80 B >=70 C >=60 D 不及格 E
var score int
fmt.Scan(&score)
switch score / 10 {
case 10:
//fmt.Println("A")
fallthrough
case 9:
fmt.Println("A")
case 8:
fmt.Println("B")
case 7:
fmt.Println("C")
case 6:
fmt.Println("D")
default:
fmt.Println("E")
}
}
func main0302() {
var score int
fmt.Scan(&score)
switch {
case score >= 90:
fmt.Println("A")
case score >= 80:
fmt.Println("B")
case score >= 70:
fmt.Println("C")
case score >= 60:
fmt.Println("D")
default:
fmt.Println("E")
}
}
func main0303() {
var score int
fmt.Scan(&score)
switch score > 60 {
case true:
fmt.Println("及格")
case false:
fmt.Println("不及格")
}
}
func main() {
//根據輸入的年份月份 計算這個月有多少天
var y int
var m int
fmt.Scan(&y, &m)
//在switch語句中可以把相同的值放在一個case中
switch m {
case 1, 3, 5, 7, 8, 10, 12:
fmt.Println(31)
case 4, 6, 9, 11:
fmt.Println(30)
//fallthrough 在case中向下執行下一個case
//case 1:
// fallthrough
//case 3:
// fallthrough
//case 5:
// fallthrough
//case 7:
// fallthrough
//case 8:
// fallthrough
//case 10:
// fallthrough
//case 12:
// fmt.Println(31)
//
//case 4:
// fallthrough
//case 6:
// fallthrough
//case 9:
// fallthrough
//case 11:
// fmt.Println(30)
case 2:
//判斷是否是閏年 能被4整除 但是 不能被100整除 或 能被400整除
if y%4 == 0 && y%100 != 0 || y%400 == 0 {
fmt.Println(29)
} else {
fmt.Println(28)
}
default:
fmt.Println("月份輸入錯誤")
}
}
//case 3:
// fmt.Println(31)
//case 4:
// fmt.Println(30)
//case 5:
// fmt.Println(31)
//case 6:
// fmt.Println(30)
//case 7:
// fmt.Println(31)
//case 8:
// fmt.Println(31)
//case 9:
// fmt.Println(30)
//case 10:
// fmt.Println(31)
//case 11:
// fmt.Println(30)
//case 12:
// fmt.Println(31)
4: if和switch比較
package main
func main() {
//優點
//if 可以進行區間判斷 巢狀使用
//switch 執行效率高 可以將多個滿足相同條件的值放在一起
//缺點
//if 執行效率低
//switch 不建議巢狀使用
}
5: 迴圈語句
package main
import "fmt"
func main() {
//for i := 0; i < 5; i++ {
// fmt.Println("6666")
//}
//for i := 1; i <= 10; i++ {
// fmt.Println(i)
//}
//計算1-100和
//sum := 0
//for i := 1; i <= 100; i++ {
// sum += i
//}
//
//fmt.Println(sum)
//計算1-100偶數的和
//在for語句中巢狀if條件判斷
//sum := 0
//for i := 1; i <= 100; i++ {
// if i%2 == 0 {
// sum+=i
// }
//}
//
//fmt.Println(sum)
//計算1-100偶數的和
sum := 0
for i := 0; i <= 100; i += 2 {
sum += i
}
fmt.Println(sum)
}