go_条件语句

关系运算符

运算符解释
==等于
!=不等于
>大于
>=大于或等于
<小于
<=小于或等于

优先级

算数运算符 > 关系运算符 > 赋值运算符

单分支控制

if 条件表达式 {
    代码块
}

双分支控制

if 条件表达式 {
    代码块
} else {
    代码块
}

多分支控制

if 条件表达式 {
    代码块
} else if 条件表达式 {
    代码块
} else {
    代码块
}

分支嵌套

if 条件表达式 {
    if 条件表达式 {
        代码块
    } else {
        代码块
    }
} else {
    代码块
}

例子

package main

import "fmt"

func main() {
	var number int
	fmt.Scanln(&number)

	if number > 10 {
		fmt.Printf("您输入的数字是%v, 大于10\n", number)
	} else if number < 10 {
		// 嵌套双分支
		if number > 5 {
			fmt.Printf("您输入的数字是%v, 小于10, 大于5\n", number)
		} else {
			fmt.Printf("您输入的数字是%v, 小于或等于5\n", number)
		}
	} else {
		fmt.Printf("您输入的数字是%v, 等于10\n", number)
	}
}

switch-case

switch语句可以看作是一种基于计算的跳转,计算控制表达式的之后,程序会跳转到相匹配的case(分支标号处),分支标号只是说明switch内部位置的路标,case 与 case 之间是独立的代码块,不需要通过 break 语句跳出当前 case 代码块以避免执行到下一行(在C语言中在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case中去,直到遇到一个break,或着switch结束为止,go做了改进

switch 控制表达式 {
case 表达式1:
    语句...
case 表达式2,表达式3:
    语句...
default:
    语句...
}
  1. 控制表达式的结果控制着表达式的类型,数据类型必须保持一致。
  2. case后可接多个表达式,常量,变量,函数返回值等等以逗号分隔,case时只看表达式的最后结果。
  3. case后的值不能重复。
package main

import "fmt"

func main() {
	var number int
	fmt.Scanln(&month)

	switch month {
	case 3, 4, 5:
		fmt.Println("Hello 春天!")
	case 6, 7, 8:
		fmt.Println("Hello 夏天!")
	case 9, 10, 11:
		fmt.Println("Hello 秋天!")
    case 12, 1, 2:
		fmt.Println("Hello 冬天!")
	default:
		fmt.Println("请输入1~12的整数!")
	}
}

switch可不接表达式

switch {
case 条件表达式1:
    语句...
case 条件表达式2,条件表达式3:
    语句...
default:
    语句...
}
  1. switch后不接表达式时,case后的值只能为bool类型;
  2. case后可接多个条件表达式,以逗号分隔。
package main

import "fmt"

func main() {
	var number int
	fmt.Scanln(&number)

	switch {
	case number > 7:
		fmt.Println("Hello case number > 5")
		
	case number < 5, number > 6:
		fmt.Println("Hello case number < 5, number > 6")
		// 使得当前分支执行结束之后,会执行下一个分支的代码
		fallthrough
	// ERROR
	// case 7:
	// 	fmt.Println("Hello case case 7")
    case false:
    	// 正常情况下都不会进入, fallthroug可以强制执行
		fmt.Println("Hello case false")
	case true:
		// fallthrough 只穿透下一个case, 这里不执行
		fmt.Println("Hello case true")
	// default:
	// 	fmt.Println("Hello default")
	}
}

tip: switch结构中default可以没有, fallthrough使得当前分支执行结束之后,会执行下一个分支的代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值