第 7 節:運算子流程控制

kuibatian發表於2019-11-26

前面我們寫的程式都是從第一行開始執行,一直執行到末尾,一行一行的順序執行下來,這種執行結構叫順序執行結構。
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)

}

相關文章