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) ...
随机推荐
- MySQL存储引擎的介绍
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建.查询.更新和删除数据操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎还可以获得特定的功能. ...
- Java 之 文件过滤器
在学习过滤器之前,先来做一个案例. 题目:文件搜索,搜索 D:\java 目录中 .java 文件. 分析: 1. 目录搜索,无法判断多少级目录,使用递归,遍历所有目录 2. 遍历目录时,获取的子 ...
- ios9 字符串与UTF-8 互相转换
在数据网路请求或其他情况下,需要将字符串转换成UTF-8编码 ios9后对其方法进行了修改 NSString *str = @"北京"; 把这个转成UTF8以前我们使用的是 NSS ...
- linux驱动开发随手记【1】
1.一个patch只完成一项任务 2.用vim编辑多个文件,想同时关闭所有文件时候,可以用 :qall 命令 .vim用户手册08 3.mmc dev 0.mmc为U-boot命令,这句话的含义是设置 ...
- Ant环境安装
一:下载安装Ant,配置环境变量 1.进入http://ant.apache.org/bindownload.cgi下载ant 2.配置环境变量 新建ANT_HOME 配置path环境变量 配置cla ...
- centos iptables 数据转发
iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to 38.X25.X.X02 iptables -t nat -I POSTR ...
- 温控PID自测验程序
#pragma once #ifndef _PID_H_ #define _PID_H_ #include <vector> #include <map> using name ...
- Windows10安装MongoDB4.0详细流程及启动配置
一.安装 首先去官网下载Mongodb安装包,网址https://www.mongodb.com/download-center/community,下载完成后双击安装就行 安装步骤: 1.点击nex ...
- Socket的一些疑惑整理
关于listen的问题请看steven<tcp/ip详解1>18章18.11.4 呼入连接请求队列一节,说的很清楚
- Mongoose初使用总结
连接mongoose mongoose连接数据库有两种方式 第一种: 'use strict'; const mongoose = require('mongoose'); mongoose.conn ...