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) ...
随机推荐
- iOS 动画基础-显式动画
摘要 显式动画 属性动画 CABasicAnimation *animation = [CABasicAnimation animation]; [self updateHandsAn ...
- 【转载】腾讯云安全组如何开放3306端口让Mysql可访问
Mysql数据库的默认端口号为3306,在服务器安装好Mysql数据库后,如果使用的服务器是阿里云或者腾讯云服务器,如果在后台启用了安全组功能,则需要在安全组中对3306端口的入站规则进行放行,只有在 ...
- vue动态绘制四分之三圆环
参照网上的一个案例“参照的为绘制的是一个动态的圆环”,现在我的需求是改编成四分之三的圆环实现效果: 样式展示 canvas绘图基本操作设置就可以参考源代码链接:原文:https://blog.csdn ...
- 用BIO手写实现Redis客户端的探究(拒绝Jedis)
在Redis的使用过程中,大多数人都是使用现成的客户端,如Jedis,Redisson,Lettuce.因此本文研究用BIO的方式手写Redis客户端尝试,对遇到的问题进行探究及总结. Redis通讯 ...
- Android面试题 描述一下android的系统架构
android系统架构从下往上为linux内核层.运行库.应用程序框架层和应用程序层. Linux Kernel:负责硬件的驱动程序.网络.电源.系统安全以及内存管理等功能. Libraries和an ...
- java - day017 - 线程
进程 操作系统中, 并行执行的任务 线程 进程内部, 并行执行的任务 进程包含线程 线程的创建 继承Thred 定义 Thred 的子类 重写 run() 方法 在 run() 方法中的代码, 是与其 ...
- Linux下制作静态库 & 动态库
静态库 1.将.c生成.o文件 gcc-cadd.c-o add.o 2.使用ar工具制作静态库 ar rcs lib库名.a add.o sub.o div.o 3.编译静态库到可执行文件中 gcc ...
- Windows下动态库的制作与使用
创建静态库
- CentOS7下编译安装Python3.7.x【亲测有效】
所有操作都在root用户下操作 下载安装包 编译安装 建立软链接 验证 安装: 更新yum: yum update 安装Python依赖: yum install openssl-devel bzip ...
- Codeforces #503 C. Elections(贪心,逆向
我的参考的博客地址 题目 逆向考虑. 暴力遍历 k(k是1到n/2+1 范围内的),挑出对于每一个k,记对于党派 i,num[ i ]为其票数.num[ i ]小于k-1的就不用改变投票了(这部分是比 ...