if語句判斷
-
if裏的條件能夠賦值
-
if的條件裏賦值的變量做用域就在這個if語句裏
if contents, err := ioutil.ReadFile(filename); err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s\n", contents)
}
// 這裏會報錯。contents 做用域不一樣
// fmt.Printf("%s\n", contents)
switch語句
- switch語句中,每一個case會自動break
- 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("unsupported operator:" + op)
}
return result
}
func grade(score int) string {
var g := ""
switch {
case score < 0 || score > 100
panic(fmt.Sprintf("Wrong score: %d", score))
case score < 60:
g = "F" // 或者 return "F"
case score < 80:
g = "C"
case score < 90:
g = "B"
case score <= 100:
g = "A"
}
return g
}