go语言switch语句的用法,默认值,及强制执行的case代码的fallthrough

go语言的switch语句跟if...else if...的语句的功能几乎一样,不过switch语句写起来要更加简洁、方便。switch语句从上到下注意匹配case的表达式,直到找到匹配项,其语法如下:

go语言switch语法

switch expression {
case condition1:
	do something 1
case condition2:
	do something 2
......
case conditionN:
	do something N
}

上述语法中,switch的表达式expression将于“{}”中的各个case的condition进行匹配,之上而下,直至匹配到为止。

switch基本用法实例

package main

import (
	"fmt"
)

func main() {

	switch 1 + 1 {
	case 1:
		fmt.Println("This is case 1")
	case 2:
		fmt.Println("This is case 2")
	case 3 - 3:
		fmt.Println("This is case 3")
	}

}
代码输出:
This is case 2

代码解析

如上代码,鄙人尝试过将第三个case改成3-1这样的表达式,结果go语言报错提示value为2的case已经存在,说明case的值不能重复。

case无法匹配switch的情况使用default

当case的表达式的值都无法跟switch的相匹配,那么我们可以使用default来进行匹配,实例如下:

package main

import (
	"fmt"
)

func main() {
	fmt.Print("说出程序员的一个明显特征:")
	var a string
	fmt.Scanf("%s", &a)
	switch a {
	case "长得帅":
		fmt.Println("你觉得程序员长得帅!")
	case "有恋人":
		fmt.Println("你说程序员都不是单身?")
	case "有情趣":
		fmt.Println("你觉得程序员很风趣?")
	default:
		fmt.Println("你可能说错了,程序员的理想是改变世界的人,实际上却是个码农!")
	}

}

代码输出:
说出程序员的一个明显特征:高富帅  //高富帅为我们输入的内容
你可能说错了,程序员的理想是改变世界的人,实际上却是个码农!

代码解析

如上代码,当switch的表达式无法匹配case中的表达式,那么将自动匹配default的内容,如果匹配,则会忽略default的内容。


switch的默认值

当switch的expression没有写,则默认匹配true的值,实例如下:

package main

import (
	"fmt"
)

func main() {
	switch {
	case false:
		fmt.Println("This is false")
	case true:
		fmt.Println("This is true")
	default:
		fmt.Println("This is default")
	}
}
代码输出:
This is true

fallthrough强制执行case代码

通常情况下,我们可以通过fallthrough的关键词,来强制执行匹配的case的后面的代码,如下实例:

package main

import (
	"fmt"
)

func main() {
	switch false {
	case false:
		fmt.Println("This is false")
		fallthrough
	case true:
		fmt.Println("This is true")
		fallthrough
	default:
		fmt.Println("This is default")
	}
}

代码输出:
This is false
This is true
This is default

全栈后端 / go语法 :













Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.