Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码:
示例1:
package main
import "fmt"
func main() {
	num := 3
	switch num {
	case 1:
		fmt.Println("按下的是1楼")
	case 2:
		fmt.Println("按下的是2楼")
	case 3:
		fmt.Println("按下的是3楼")
	case 4:
		fmt.Println("按下的是4楼")
	}
}
#执行结果
按下的是3楼
示例2:
package main
import "fmt"
func main() {
	num := 5
	switch num {
	case 1:
		fmt.Println("按下的是1楼")
		//break //go语言保留了break关键字,跳出switch语言,不写,默认就包含了。
	case 2:
		fmt.Println("按下的是2楼")
	case 3:
		fmt.Println("按下的是3楼")
	case 4:
		fmt.Println("按下的是4楼")
	default:
		fmt.Println("按下的是xxx楼")
	}
}
#执行结果
按下的是xxx楼
示例3: 需要输入按下的楼层
package main
import "fmt"
func main() {
	var num int
	fmt.Printf("请按下楼层:")
	fmt.Scan(&num)
	switch num {
	case 1:
		fmt.Println("按下的是1楼")
	case 2:
		fmt.Println("按下的是2楼")
	case 3:
		fmt.Println("按下的是3楼")
	case 4:
		fmt.Println("按下的是4楼")
	default:
		fmt.Println("按下的是xxx楼")
	}
}
#执行结果:
请按下楼层:2 #输入2 按下的是2楼
用途:fallthrough //不跳出switch语句,后面的无条件执行
示例4:
package main
import "fmt"
func main() {
	var num int
	fmt.Printf("请按下楼层:")
	fmt.Scan(&num)
	switch num {
	case 1:
		fmt.Println("按下的是1楼")
		fallthrough //不跳出switch语句,后面的无条件执行
	case 2:
		fmt.Println("按下的是2楼")
		fallthrough
	case 3:
		fmt.Println("按下的是3楼")
		fallthrough
	case 4:
		fmt.Println("按下的是4楼")
		fallthrough
	default:
		fmt.Println("按下的是xxx楼")
	}
}
#执行结果
请按下楼层:1 按下的是1楼 按下的是2楼 按下的是3楼 按下的是4楼 按下的是xxx楼
示例5: (推荐用法)
package main
import "fmt"
func main() {
	switch num := 1; num {
	case 1:
		fmt.Println("按下的是1楼")
	case 2:
		fmt.Println("按下的是2楼")
	case 3:
		fmt.Println("按下的是3楼")
	case 4:
		fmt.Println("按下的是4楼")
	default:
		fmt.Println("按下的是xxx楼")
	}
}
#执行结果:
按下的是1楼
示例6: case 后面接数字,可以写多个
package main //必须有一个main包
import "fmt"
func main() {
	//支持一个初始化语句, 初始化语句和变量本身, 以分号分隔
	switch num := 4; num { //switch后面写的是变量本身
	case 1:
		fmt.Println("按下的是1楼")
	case 2:
		fmt.Println("按下的是2楼")
	case 3, 4, 5:
		fmt.Println("按下的是yyy楼")
	case 6:
		fmt.Println("按下的是4楼")
	default:
		fmt.Println("按下的是xxx楼")
	}
}
#执行结果:
按下的是yyy楼
示例7:
package main
import "fmt"
func main() {
	score := 85
	switch {
	case score > 90:  //case后面可以放条件
		fmt.Println("优秀")
	case score > 80:
		fmt.Println("良好")
	case score > 70:
		fmt.Println("一般")
	default:
		fmt.Println("其它")
	}
}
#执行结果:
良好
go语音基础之switch语句 和 fallthrough 用途
原文:https://www.cnblogs.com/nulige/p/10202141.html