if语句
// Golang支持在if语句中直接定义变量
// if ()可以写也可以不写,建议不写
// 大括号必须要有,else 不能换行
if age := 20; age > 18 {
fmt.Println("你已经大于18岁了")
} else {
fmt.Println("你还是个未成年人")
}
var score int
fmt.Println("请输入成绩")
fmt.Scanln(&score)
if score == 100 {
fmt.Println("奖励mac电脑")
} else if score > 90 && score < 100 {
fmt.Println("奖励iphone手机")
} else {
fmt.Println("奖励ipad")
}
// 求一元二次方程ax2+bx+c=0的根,b2-4ac判断根的个数
// 引入math包, math.Sqrt(x), x的平方根
var a float64 = 2.0
var b float64 = 4.0
var c float64 = 2.0
m := b*b - 4*a*c
var x1, x2 float64
if m > 0 {
x1 = (-b + math.Sqrt(m)) / 2 * a
x2 = (-b - math.Sqrt(m)) / 2 * a
fmt.Printf("有两个根,分别是%v %v\n", x1, x2)
} else if m == 0 {
x1 = (-b + math.Sqrt(m)) / 2 * a
fmt.Printf("有一个根,是 %v\n", x1)
} else {
fmt.Printf("无解")
}
// 有一个根,是 -4
switch语句
- Golang中switch语句匹配项后面不再需要break
- case表达式可以有多个,使用 , 隔开,表示或的关系,可以是变量、常量、一个有返回值的函数。
- switch表达式的数据类型要跟case表达式的数据类型保持一致,否则报错
相当于是把case表达式的值赋给switch表达式
- case表达式的值如果是字面量的形式,则不能重复;如果是变量的形式,则可以。
- default语句不是必须的
- switch穿透 - fallthrough,如果在case语句块后增加 fallthrough ,则会执行下一个case语句块(不用判断)。
type-switch来判断某个interface变量中实际指向的变量类型
switch 表达式 {
case 表达式1, 表达式2 :
语句块1
// break // redundant break statement(冗余中断语句)
// 这里可以有多个case存在
default:
语句块
}
```go
func test(char byte) byte { return char + 1 }
func main() { var key byte fmt.Println(“请输入单个字母字符”) fmt.Scanf(“%c”, &key) // %c 该值对应的unicode码值 fmt.Printf(“%T %v \n”, key, key) switch test(key) { case ‘a’: fmt.Println(“今天星期一”) case ‘b’: fmt.Println(“今天星期二”) case ‘c’: fmt.Println(“今天星期三”) default: fmt.Println(“今天可能是周末!”) }
// fallthrough
var num int = 10
switch num {
case 10:
fmt.Println("101010")
fallthrough
case 20:
fmt.Println("202020")
}
// 101010
// 202020
} ```