Go by Example-Switch分支结构
上一节提到了Go语言中的if/else结构,但是条件过多的时候就不适合用if语句了,这个时候我们就可以使用switch语句了。
基本特性
switch 是一个条件语句,用于将一个表达式的求值结果与可能的值的列表进行匹配,并根据匹配结果执行相应的代码。可以认为 switch 语句是编写多个 if-else 子句的替代方式。
有以下性质:
1.switch 表达式不需要为常量,甚至不需要为整数,case 是按照从上到下的顺序进行求值,直到找到匹配的。如果 switch 没有表达式,则对 true 进行匹配。因此,可以按照语言习惯将 if-else-if-else 链写成一个 switch。
2.switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case,但是如果我们想匹配成功后继续执行后面的 case,可以使用 fallthrough 来解决这个问题 。
基本结构
switch var1 {
case val1:
...
case val2:
...
default:
...
}
代码示例
一个基本的switch语句
num := 10
switch num {
case 2:
fmt.Printf("num is %d\n", num)
case 6:
fmt.Printf("num is %d\n", num)
case 10:
fmt.Printf("num is %d\n", num)
default:
fmt.Printf("num is %d\n", num)
}
switch后面接前面定义的变量,同时case后面的表达式的类型要和switch后面的一致。
这里因为num等于10,所以会匹配case 10的那个分支并执行分支内的内容,然后跳出switch结构。
switch后面还可以什么也不加,如果switch后面没有表达式,则默认为表达式为true,按照上面的经验可知,下面对应的case后面也要是bool类型。
switch {
case true:
fmt.Println("true")
default:
fmt.Println("false")
}
另外一个情况,同样的如果switch后面没有表达式,case还可以接表达式。
b := 18
switch {
case b > 15 && b < 18: //像使用if一样加表达式
fmt.Println("15-17")
case b > 18 && b <= 30:
fmt.Println("18-30")
default:
fmt.Println("else")
}
因为case后面的表达式最终结果也是布尔类型的。
如果想在一个case匹配成功之后,继续匹配其他的case区域,可以使用fallthrough
var a = "hello"
switch a {
case "hello":
fmt.Print("hello ")// 不换行打印
fallthrough
case "dj":
fmt.Print("dj ")
fallthrough
default:
fmt.Print("666 ")
}
你会发现它会打印出 hello dj 666。
还可以在case后面加多个值,通过逗号间隔开
var a = "hello"
switch a {
case "hello", "dj":
fmt.Println("uccu onedaydayde")
}
后记
这里我们只介绍了switch的基本用法,当学了接口之后我们再去了解switch的另外一种用法-类型 switch。
Go by Example-Switch分支结构的更多相关文章
- go语言从例子开始之Example7.switch分支结构
switch ,方便的条件分支语句 package main import "fmt" import "time" func main() { 一个基本的 sw ...
- Python中实现switch分支结构
Python不像C/C++,Java等有switch-case的语法.不过其这个功能,比如用Dictionary以及lambda匿名函数特性来替代实现. 实现方法分为两步: 首先,定义一个字典: 其次 ...
- c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)
1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数 ...
- JAVA if条件语句,switch多分支结构,与逻辑运算符
一.if条件语句 示例: import java.util.Scanner; public class Test{ public static void main(String[] args){ Sc ...
- Java 8- Java 分支结构 - if…else/switch
Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构. Java有两种分支结构: if语句 switch语句 if语句 一个if语句包含 ...
- Java分支结构 - if...else/switch
Java分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构. Java有两种分支结构: if语句 switch语句 if语句 一个if语句包含一 ...
- Java 分支结构 - if...else/switch
Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构. Java 有两种分支结构: if 语句 switch 语句 if 语句 一个 i ...
- day04逻辑运算符短路、多分支结构(if和switch)、循环结构、while循环
复习 1.运算符和表达式 1)表达式 2)算数运算符 + - * / % 3)关系运算符 > < >= <= == != 4)逻辑运算符 && | ...
- PHP流程控制之分支结构switch语句的使用
分支结构switch语句的使用 还记得我们最开始讲了这么一个故事: 王同学家里头特别有钱,所以他的行程方式和正常人的又有些不一样. 他的出行方式呢有6种,如下: 1,司机开车2,民航3,自己家的专机4 ...
- JavaScript知识点:分支结构(if、switch)+算法例题
if-else分支 1.if条件应该是boolean类型的值或表达式 2.如果条件不是Boolean,会进行自动转换 以下几种情况会默认转换为 false: if(0).if(0.0) if(NaN) ...
随机推荐
- element-ui 表格错行
//表格错行 .el-table th.gutter { display: table-cell !important }
- stm32 FSMC-外扩SRAM IS62WV51216
引脚定义 FSMC配置步骤 1.使能对应引脚GPIO时钟 2.配置GPIO引脚模式 3.使能FSMC时钟 4.FSMC初始化 5.存储器块使能 举例 #define Bank1_SRAM3_ADDR ...
- win10 下的 CUDA10.0 +CUDNN + tensorflow + opencv 环境部署
1 CUDA 10.0 安装 win10 下的cuda 安装是非常简单的,和其他程序安装没什么区别,现在 tensorflow 1.13 版本以上 支持 CUDA 10.0 ,这里选取了CUDA 1 ...
- Linux文件(夹)属性
ll 或者 ls -lh 查看文件属性:
- Json:Restful
JArray & JObject JArray与JObject在json的应用:无需定义相应的类对象,直接解析 JArray jarr = JArray.Parse(jsonStr); //数 ...
- mysql的2种备份mysqldump 和 Xtrabackup
mysqldump备份方式 备份 mysqldump -uroot -p 数据库名 > 备份的文件名 恢复(先关闭数据库) mysql -uroot -p 数据库名 < 备份的文件名 Xt ...
- 《Python编程:从入门到实践》第四章 操作列表 习题答案
#4.1 pizzas = ['KFC','MDL','DKS'] ''' for pizza in pizzas: print(pizza); ''' for pizza in pizzas: pr ...
- 转载: Redis面试常问的问题
https://www.cnblogs.com/javazhiyin/p/9842571.html 近,阿音在为接下来的一场面试做准备,其中的内容包括redis,而且redis是重点内容. Redis ...
- linux网络编程之posix条件变量
今天来学习posix的最后一个相关知识----条件变量,言归正传. 下面用一个图来进一步描述条件变量的作用: 为什么呢? 这实际上可以解决生产者与消费者问题,而且对于缓冲区是无界的是一种比较理解的解决 ...
- 跨站请求伪造(CSRF 或者 XSRF)与跨站脚本(XSS)
跨站请求伪造 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 X ...