Skip to content

判断语句

if 语句

以年龄为例,输入的年龄在某一个区间,就输出对应的提示信息

go
<=0     未出生
1-18    未成年
18-35   青年
>=35    中年

很明显,这是一个多选一的情况

我们有很多中方式来实现

中断式

go
package main

import "fmt"

func main() {
  fmt.Println("请输入你的年龄:")
  var age int
  fmt.Scan(&age)

  if age <= 0 {
    fmt.Println("未出生")
    return
  }
  if age <= 18 {
    fmt.Println("未成年")
    return
  }
  if age <= 35 {
    fmt.Println("青年")
    return
  }
  fmt.Println("中年")

}

它也有个好听的名字,叫卫语句

嵌套式

go
package main

import "fmt"

func main() {
  fmt.Println("请输入你的年龄:")
  var age int
  fmt.Scan(&age)

  if age <= 18 {
    if age <= 0 {
      fmt.Println("未出生")
    } else {
      fmt.Println("未成年")
    }
  } else {
    if age <= 35 {
      fmt.Println("青年")
    } else {
      fmt.Println("中年")
    }
  }
}

多条件式

go
package main

import "fmt"

func main() {
  fmt.Println("请输入你的年龄:")
  var age int
  fmt.Scan(&age)

  if age <= 0 {
    fmt.Println("未出生")
  }
  if age > 0 && age <= 18 {
    fmt.Println("未成年")
  }
  if age > 18 && age <= 35 {
    fmt.Println("青年")
  }
  if age > 35 {
    fmt.Println("中年")
  }
}

switch 语句

还是上面那个案例,如果是用 switch 就很直观了

go
package main

import "fmt"

func main() {
  fmt.Println("请输入你的年龄:")
  var age int
  fmt.Scan(&age)

  switch {
  case age <= 0:
    fmt.Println("未出生")
  case age <= 18:
    fmt.Println("未成年")
  case age <= 35:
    fmt.Println("青年")
  default:
    fmt.Println("中年")
  }
}

除了这样的写法,还有枚举所有的可能值

例如

go
1   星期一
2   星期二
3   星期三
go
package main

import "fmt"

func main() {
  fmt.Println("请输入星期数字:")
  var week int
  fmt.Scan(&week)

  switch week {
  case 1:
    fmt.Println("周一")
  case 2:
    fmt.Println("周二")
  case 3:
    fmt.Println("周三")
  case 4:
    fmt.Println("周四")
  case 5:
    fmt.Println("周五")
  case 6, 7:
    fmt.Println("周末")
  default:
    fmt.Println("错误")
  }
}

可以理解为 case 的值就是 switch 的枚举结果

一般来说,go 的 switch 的多选一,满足其中一个结果之后,就结束 switch 了

例如

go
package main

import "fmt"

func main() {
  fmt.Println("请输入你的年龄:")
  var age int
  fmt.Scan(&age)

  switch {
  case age <= 0:
    fmt.Println("未出生")
  case age <= 18:
    fmt.Println("未成年")
  case age <= 35:
    fmt.Println("青年")
  default:
    fmt.Println("中年")
  }
}

我输入一个 12,我希望它能输出满足的所有条件,例如我希望它输出,未成年,青年

go
package main

import "fmt"

func main() {
  fmt.Println("请输入你的年龄:")
  var age int
  fmt.Scan(&age)

  switch {
  case age <= 0:
    fmt.Println("未出生")
    fallthrough
  case age <= 18:
    fmt.Println("未成年")
    fallthrough
  case age <= 35:
    fmt.Println("青年")
  default:
    fmt.Println("中年")
  }
}