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. Good Bye 2014 E - New Year Domino 单调栈+倍增

    E - New Year Domino 思路:我用倍增写哒,离线可以不用倍增. #include<bits/stdc++.h> #define LL long long #define f ...

  2. RxSwift 系列(三)

    RxSwift 系列(三) -- Combination Operators 前言 本篇文章将要学习如何将多个Observables组合成一个Observable.Combination Operat ...

  3. python3-开发进阶Flask的基础

    一.概述 最大的特点:短小精悍.可拓展强的一个Web框架.注意点:上下文管理机制,依赖wsgi:werkzurg 模块 二.前奏学习werkzurg 先来回顾一个知识点:一个类加括号会执行__init ...

  4. bzoj 4439: [Swerc2015]Landscaping -- 最小割

    4439: [Swerc2015]Landscaping Time Limit: 2 Sec  Memory Limit: 512 MB Description FJ有一块N*M的矩形田地,有两种地形 ...

  5. bzoj 2056: gift? 高精度?

    2056: gift? 高精度? Time Limit: 10 Sec  Memory Limit: 1 MB Description   Input 输入的第一行为一个整数t. 接下来t行,每行包含 ...

  6. [原]Android Studio导入外部项目找不到对应的sdk解决办法

    示例项目:JPushExample(349872) 打开项目的文件夹目录,找到:JPushExample(349872)\app\build.gradle打开,将里面的 compileSdkVersi ...

  7. PAT甲级1016. Phone Bills

    PAT甲级1016. Phone Bills 题意: 长途电话公司按以下规定向客户收取费用: 长途电话费用每分钟一定数量,具体取决于通话时间.当客户开始连接长途电话时,将记录时间,并且客户挂断电话时也 ...

  8. [原]Redis使用场景及使用经验

    Redis is an open source (BSD licensed), in-memory data structure store! 欢迎转载,转载请注明出处 刚刚结束一个游戏类的活动项目, ...

  9. mybatis源码分析(1)-----sqlSessionFactory创建

    1. 首先了解一下mybatis,包含核心jar ,以及spring相关jar. <!-- Mybatis相关组件 --> <dependency> <groupId&g ...

  10. Android TextView 显示HTML加图片

    TextView显示网络图片,我用android2.3的系统,可以显示图片出来,并且如果图片比较大,应用会卡的现象,肯定是因为使用主线程去获取网络图片造成的,但如果我用android4.0以上的系统运 ...