if语句:
if v>100{
return 100
}else if v<50{
return 50
}else {
return v
}
if语句不需要括号
用法进阶:
const fileName ="abc.txt"
if contents,error := ioutil.ReadFile(fileName);error!=nil{
fmt.Println(error)
}else {
fmt.Printf("%s\n",contents)
}
注意:contents和error变量都是在if代码块中定义,在if之外就不能访问这个变量了。
总结:if的条件中可以赋值;if条件中赋值的变量的作用域只在if的代码块中。
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
}
switch中不写break,go默认每个case会自动break.
测试自动break:
func grade(score int) string {
g:=""
switch {
case score<60:
g="不及格\n"
case score<70:
g="d\n"
case score<80:
g="c\n"
case score<90:
g="a\n"
case score<100:
g="good\n"
case score<0 || score>100:
g="wrong score :"+string(score)+"\n"
}
return g
}
控制台输出为:
fmt.Println(grade(50),
grade(65),
grade(78),
grade(85),
grade(93),
grade(105))
控制台:
不及格
d
c
a
good
wrong score :i
Process finished with exit code 0
switch后面也可以不跟表达式,直接写在case上也可以。