5、条件语句

package main

import (
    "fmt"
    "io/ioutil"
)

// 一般 switch 语句
func eval(a,b int,op string) int {
    var result int

    switch op {
    case "+":
        result = a + b
    case "-":
        result = a - b
    case "*":
        result = a * b
    case "/":
        result = a / b
    default:
        panic("错误运算符" + op)
    }

    return result
}

// 简洁版 switch
func grade (score int) string {
    g := ""

    switch {
    case score < 0 || score > 100 :
        panic(fmt.Sprintf("分数错了")) // panic 用与手动抛出错误
    case score < 60:
        g = "f"
    case score < 80:
        g = "c"
    case score < 90:
        g = "b"
    case score <= 100:
        g = "a"
    }

    return g
}

func main() {

    filename := "a.txt"
    contents, err := ioutil.ReadFile(filename)

    // 正常条件语句
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Printf("%s\n",contents)
    }

    // 先执行一条语句,再进行判断
    if contents1, err1 := ioutil.ReadFile(filename); err != nil {
        fmt.Println(err1)
    } else {
        fmt.Printf("%s\n",contents1)
    }

    // fmt.Printf("%s",contents1) // 报错! if语句里面定义的contents1、err1,出了这个块就访问不到了

    fmt.Println(eval(1,2,"+"))

    fmt.Println(
        grade(10),
        grade(100),
        )

}

 

switch 的 fallthrough 语句 

Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码

switch "a" {
case "a":
    fmt.Println("a")
    fallthrough
case "b":
    fmt.Println("b")
case "c":
    fmt.Println("c")
default:
}

 

posted @ 2021-11-18 21:32  JaydenQiu  阅读(26)  评论(0)    收藏  举报