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. [实战]MVC5+EF6+MySql企业网盘实战(6)——ajax方式登录

    写在前面 今天回来的比较早,就趁着有空,把登录的代码更新一下.上篇文章实现了ajax的注册,这篇将实现登录,实现目标,ajax登录方式,如果勾选记住我,则下次不再输入用户名密码,直接跳转到网盘界面. ...

  2. 七 oracle 表查询二

    1.使用逻辑操作符号问题:查询工资高于500或者是岗位为manager的雇员,同时还要满足他们的姓名首字母为大写的J?select * from emp where (sal > 500 or ...

  3. thinkphp5.0生命周期

    本篇内容我们对ThinkPHP5.0的应用请求的生命周期做大致的介绍,以便于开发者了解整个执行流程. 1.入口文件 用户发起的请求都会经过应用的入口文件,通常是 public/index.php文件. ...

  4. Java线程池使用和常用参数(待续)

    线程池怎么实现的,核心参数讲一讲? Executors是线程池的工厂类,通过调用它的静态方法如下: Executors.newCachedThreadPool(); Executors.newFixe ...

  5. 关于 devbridge

    目前据我所知最好用的 autocomplete 插件就是 jquery-ui 的 autocomplete 以及 devbridge 的 autocomplete 插件. 我最终选择了 devbrid ...

  6. [BZOJ3140][HNOI2013]消毒(二分图最小点覆盖)

    3140: [Hnoi2013]消毒 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1621  Solved: 676[Submit][Status] ...

  7. CodeForces - 1016C Vasya And The Mushrooms

    题面在这里! 好久没有体会这种A题的快感了23333 一开始看错了,以为权值是从1开始的,不过这样不要紧,最后把算的答案减去两行数的和就是正确的答案了. 然后发现位于一个角上的时候,我们其实只有两种选 ...

  8. poj 1743 后缀数组 求最长不重叠重复子串

    题意:有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题. “主题”是整个音符序列的一个子串,它需要满足如下条件:1 ...

  9. 【10.3校内测试【国庆七天乐!】】【DP+组合数学/容斥】【spfa多起点多终点+二进制分类】

    最开始想的暴力DP是把天数作为一个维度所以怎么都没有办法优化,矩阵快速幂也是$O(n^3)$会爆炸. 但是没有想到另一个转移方程:定义$f[i][j]$表示每天都有值的$i$天,共消费出总值$j$的方 ...

  10. bzoj 3757 树上莫队

    感谢以下文章作者: http://blog.csdn.net/kuribohg/article/details/41458639 http://vfleaking.blog.163.com/blog/ ...