if语句

  1. // Golang支持在if语句中直接定义变量
  2. // if ()可以写也可以不写,建议不写
  3. // 大括号必须要有,else 不能换行
  4. if age := 20; age > 18 {
  5. fmt.Println("你已经大于18岁了")
  6. } else {
  7. fmt.Println("你还是个未成年人")
  8. }
  1. var score int
  2. fmt.Println("请输入成绩")
  3. fmt.Scanln(&score)
  4. if score == 100 {
  5. fmt.Println("奖励mac电脑")
  6. } else if score > 90 && score < 100 {
  7. fmt.Println("奖励iphone手机")
  8. } else {
  9. fmt.Println("奖励ipad")
  10. }
  1. // 求一元二次方程ax2+bx+c=0的根,b2-4ac判断根的个数
  2. // 引入math包, math.Sqrt(x), x的平方根
  3. var a float64 = 2.0
  4. var b float64 = 4.0
  5. var c float64 = 2.0
  6. m := b*b - 4*a*c
  7. var x1, x2 float64
  8. if m > 0 {
  9. x1 = (-b + math.Sqrt(m)) / 2 * a
  10. x2 = (-b - math.Sqrt(m)) / 2 * a
  11. fmt.Printf("有两个根,分别是%v %v\n", x1, x2)
  12. } else if m == 0 {
  13. x1 = (-b + math.Sqrt(m)) / 2 * a
  14. fmt.Printf("有一个根,是 %v\n", x1)
  15. } else {
  16. fmt.Printf("无解")
  17. }
  18. // 有一个根,是 -4

switch语句

  • Golang中switch语句匹配项后面不再需要break
  • case表达式可以有多个,使用 , 隔开,表示或的关系,可以是变量、常量、一个有返回值的函数。
  • switch表达式的数据类型要跟case表达式的数据类型保持一致,否则报错

相当于是把case表达式的值赋给switch表达式

  • case表达式的值如果是字面量的形式,则不能重复;如果是变量的形式,则可以。
  • default语句不是必须的
  • switch穿透 - fallthrough,如果在case语句块后增加 fallthrough ,则会执行下一个case语句块(不用判断)。
  • type-switch来判断某个interface变量中实际指向的变量类型

    1. switch 表达式 {
    2. case 表达式1, 表达式2 :
    3. 语句块1
    4. // break // redundant break statement(冗余中断语句)
    5. // 这里可以有多个case存在
    6. default:
    7. 语句块
    8. }

    ```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(“今天可能是周末!”) }

  1. // fallthrough
  2. var num int = 10
  3. switch num {
  4. case 10:
  5. fmt.Println("101010")
  6. fallthrough
  7. case 20:
  8. fmt.Println("202020")
  9. }
  10. // 101010
  11. // 202020

} ```