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 用途的更多相关文章

  1. java基础(六) switch语句的深入解析

    引言   switch 语句是非常的基础的知识,掌握起来也不难掌握,语法比较简单.但大部分人基本是知其然,不知其所以然.譬如 早期JDK只允许switch的表达式的值 int及int类型以下的基本类型 ...

  2. Java基础(1):Switch语句注意的5个地方

    不得不说的几点小秘密: 1. switch 后面小括号中表达式的值必须是整型或字符型 2. case 后面的值可以是常量数值,如 1.2:也可以是一个常量表达式,如 2+2 :但不能是变量或带有变量的 ...

  3. 【Java基础】switch语句实现根据数字输出对应星期

    代码: import java.util.Scanner; /* * switch语句格式: * switch(表达式) { * case 值1: * 语句体1; * break; * case 值2 ...

  4. 黑马程序员_毕向东_Java基础视频教程——switch语句练习(随笔)

    switch(练习) /* if和 switch 语句很像. 具体什么场景下使用什么语句呢? 如果判断的具体数值不多且符合byte.short.int.char.String类型,虽然两个语句都可以使 ...

  5. C 语言中的 switch 语句 case 后面是否需要加大括号

    事件原由为编辑器的自动缩进,当 case 换行后不自动缩进. 于是在在想可以可否在 case 后面再大括号,让其自动缩进. 查了资料,发现 case 是可以加大括号的,相当于代码块. 而且还有另外一个 ...

  6. C语言基础:常见循环语句 分类: iOS学习 c语言基础 2015-06-10 21:46 13人阅读 评论(0) 收藏

    for语句 for( 初始化表达式; 循环判断条件  ;增量表达式); while(条件表达式){ 循环体; } 先判断条件表达式,如果为真就执行循环体,执行完再去判断条件表达式 do{ 循环体; } ...

  7. Java入门 - 语言基础 - 10.条件语句

    原文地址:http://www.work100.net/training/java-if-else.html 更多教程:光束云 - 免费课程 条件语句 序号 文内章节 视频 1 概述 2 if...e ...

  8. R语言Switch语句

    R语言Switch语句 switch语句允许一个变量值的列表来平等进行测试.每个值被称为一个条件(情况),变量被接通检查每个条件(情况). 语法 在R语言中创建switch语句的基本语法是: 以下规则 ...

  9. Python 为什么不支持 switch 语句?

    本文出自"Python为什么"系列,请查看全部文章 在这篇文章里,我们会聊一聊为什么 Python 决定不支持 switch 语句. 为什么想要聊这个话题呢? 主要是因为 swit ...

随机推荐

  1. 【LOJ】 #2009. 「SCOI2015」小凸玩密室

    题解 神仙dp啊QAQ 我们发现我们需要枚举一个起点,遍历完它所有的儿子然后向上爬 设\(f[i][j]\)表示第i个点的子树全部处理完之后到达i深度为j的祖先的兄弟处 我们只需要对叶子节点和只有一个 ...

  2. 在kubernetes运行一个容器案例

    1. 检查kubernetes 组件是否正常运行. [root@c720120 ~]# kubectl get cs NAME                 STATUS    MESSAGE    ...

  3. 用于浏览器本地存储的js插件 - jStorage

    简介 jStorage是一个跨浏览器的将key-value类型的数据存储到浏览器本地存储的js插件——jStorage支持所有主流浏览器,PC机(甚至包括是IE6)和移动终端均可用.此外,jStora ...

  4. Python开发基础-Day30多线程锁机制

    GIL(全局解释器锁) GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念,是为了实现不同线程对共享资源访问的互斥,才引入了GIL 在Cpython解释器 ...

  5. Number lengths FZU - 1050

    N! (N factorial) can be quite irritating and difficult to compute for large values of N. So instead ...

  6. hpu 1194 Sequence

    HS(Handsome)的Ocean在纸上写下NN个整数,Ocean把它定义为OO序列. Ocean认为一个序列的价值的是:序列中不同元素个数. 现在他想知道OO序列中所有子序列的价值之和. 比如说: ...

  7. Python中yield和yield from的用法

    yield python中yield的用法很像return,都是提供一个返回值,但是yield和return的最大区别在于,return一旦返回,则代码段执行结束,但是yield在返回值以后,会交出C ...

  8. 【BZOJ 3133】 3133: [Baltic2013]ballmachine (线段树+倍增)

    3133: [Baltic2013]ballmachine Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 148  Solved: 66 Descri ...

  9. tomcat8.5请求参数限制的问题

    前段时间遇到这个问题: 包含json字符串类型的参数的http请求失败,返回状态码400,提示invalid character found in the request target. Tomcat ...

  10. 两个矩阵相加 Exercise08_05

    import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年12月 * 题目:两个矩阵相加 * */ public class Exercise08_0 ...