【Golang】switch使用

相比较 C 和 Java 等其它语言而言,Go 语言中的 switch 结构使用上更加灵活。它接受任意形式的表达式:
1.
switch var1 {
case val1:
	...
case val2:
	...
default:
		...
	}

变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;
可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。
!一旦成功地匹配到某个分支,在执行完相应代码后就会退出整个 switch 代码块,也就是说您不需要特别使用 break 语句来表示结束。相较C++不同
因此,程序也不会自动地去执行下一个分支的代码。
default 分支可以出现在任何顺序,但最好将它放在最后。它的作用类似与 if-else 语句中的 else,表示不符合任何已给出条件时,执行相关语句。

2.condition1
switch {
case condition1:
	...
case condition2:
	...
default:
	...
}
	优雅地进行条件判断:
	switch result := calculate(); {
    case result < 0:

    case result > 0:

    default:
        // 0
}

switch a, b := x[i], y[j]; {
    case a < b: t = -1
    case a == b: t = 0
    case a > b: t = 1
}
package main

func main() {
	//不需要特别使用 break 语句来表示结束,在执行完相应代码后就会退出整个 switch 代码块。
	var i int = 0
	switch i {
	case 0: // 空分支,只有当 i == 0 时才会进入分支
		print("0")
	case 1:
		print("1")
	}
	println()

	// 如果在执行完每个分支的代码后,还希望继续执行后续分支的代码,可以使用 fallthrough 关键字来达到目的。
	switch i {
	case 0:
		print("fall 0 ")
		fallthrough//只能fall一个分支
	case 1:
		print("fall 1 ")
		// fallthrough
	case 2:
		print("fall 2 ")
	}

	//default 分支可以出现在任何顺序,但最好将它放在最后。执行完其他所有判断才到他
	var num int = 100
	switch num {
	case 98, 99:
		println("98 or 99")
	case 100:
		println("100")
	default:
		println("other")
	}
	println()

	switch num {
	default:
		println("other")
	case 98, 99:
		println("98 or 99")
	case 100:
		println("100")
	}
	println()
	//switch condition
	//1.1会不会有冲突,不会两条件都符合看谁在前
	switch {
	case num > 80:
		println("num > 80")
	case num > 60:
		println("num > 60")
	}
	println()
	switch {
	case num > 60:
		println("num > 60")
	case num > 80:
		println("num > 80")
	}

	var num1 int = 7

	switch {
	case num1 < 0:
		println("Number is negative")
	case num1 > 0 && num1 < 10:
		println("Number is between 0 and 10")
	default:
		println("Number is 10 or greater")
	}
	println()
	//switch initialization
	switch num2 := 99; {
	case num2 < 0:
		println("Number is negative")
	case num2 > 0 && num2 < 10:
		println("Number is between 0 and 10")
	default:
		println("Number is 10 or greater")
	}
	//优雅地进行条件判断:
// 	switch result := calculate(); {
//     case result < 0:

//     case result > 0:

//     default:
//         // 0
// }

// switch a, b := x[i], y[j]; {
//     case a < b: t = -1
//     case a == b: t = 0
//     case a > b: t = 1
// }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值