1.if
package main
import "io/ioutil"
func main() {
const filename = "abc.txt"
// 写法1
contents, err := ioutil.ReadFile(filename)
if err != nil{
fmt.Println(err)
} else {
fmt.Printf("%s\n", contents)
}
// 写法2
// if的条件里可以赋值
// if的条件里赋值的变量作用域就在这个if语句里
if contents, err := ioutil.ReadFile(filename); err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s\n", contents)
}
}
2.switch
switch会自动break,除非使用fallthrough
// 例1 switch后可以没有表达式
func grade(score int) string {
g := ""
switch{
case score < 0 || score > 100:
panic(fmt.Sprinft("Wrong score: %d", score))
case score < 60:
g = "F"
case score < 80:
g = "C"
case score < 90:
g = "B"
case score <= 100:
g = "A"
}
return g
}
// 例2
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
}