2.9 Go语言中的Switch
基本语法
在讲述if-else时已经提到,如果有多个判断条件,Go语言中提供了Switch-Case的方式。如果switch后面不带条件相当于switch true
// Convert hexadecimal character to an int valueswitch {case '0' <= c && c <= '9':return c - '0'case 'a' <= c && c <= 'f':return c - 'a' + 10case 'A' <= c && c <= 'F':return c - 'A' + 10}return 0
fallthrough使用方法
默认情况下,case满足执行后会进行break,后面case即使满足条件也不再循环,如果想继续执行,则需要添加fallthrough,
package mainimport "fmt"func main() {i := 3switch i {case i > 0:fmt.Println("condition 1 triggered")fallthroughcase i > 2:fmt.Println("condition 2 triggered")fallthroughdefault:fmt.Println("Default triggered")}
}
此时所有的case都会被执行
condition 1 triggered
condition 2 triggered
Default triggered
多条件匹配
如果同一个条件满足,也可以这样罗列到同一条件,相当于或条件
switch i {case 0, 1:f()default:g()
}
判断接口(interface)类型
空接口
后面我们会讲到接口,通过switch可以对type进行判断,获取接口的真实类型。
package mainimport "fmt"func main() {var value interface{}switch q:= value.(type) {case bool:fmt.Println("value is of boolean type")case float64:fmt.Println("value is of float64 type")case int:fmt.Println("value is of int type")default:fmt.Printf("value is of type: %T", q)}
}
在上面的例子中,我们定义了一个空接口
var value interface{}
同时使用switch来判断类型
switch q:= value.(type) {
由于空接口没有内容,所以类型为nil,触发了default
value is of type: <nil>
获取实际类型
我们对上面的例子进行改造,同时让空接口拥有实际的值,再来看看执行的效果
package mainimport "fmt"func valueType(i interface{}) {switch q:= i.(type) {case bool:fmt.Println("value is of boolean type")case float64:fmt.Println("value is of float64 type")case int:fmt.Println("value is of int type")default:fmt.Printf("value is of type: %T\n", q)}
}func main() {person := make(map[string]interface{}, 0)person["name"] = "Alice"person["age"] = 21person["height"] = 167.64fmt.Printf("%+v\n", person)for _, value := range person {valueType(value)}
}
这里有几个还没有讲到的知识点:
- 函数的定义方法
- 定义了一个map,但是值的类型为空接口,意思就是可以是任何类型的值,这在接口章节还会详细讲解,所以大家看到这里不要纠结,继续往下看
- 赋值时,特意给value不同的类型, string/int/float类型
最后通过循环将变量传给valueType函数,看看程序输出什么结果
map[age:21 height:167.64 name:Alice]
value is of type: string
value is of int type
value is of float64 type
2.9 Go语言中的Switch相关推荐
- Go 语言中的switch分支
switch语句常用于基于大量不同条件来执行不同动作,每一个条件对应一个case分支. switch语句的执行过程从上至下,直到找到匹配项,匹配项后面也不需要再加break. 每一个switch语句只 ...
- 平均年龄c加加语音用switch_C语言中的SWITCH是什么意思?
展开全部 Switch用在编程中,如C语言中它经常跟Case一起使用,是一个32313133353236313431303231363533e78988e69d8331333366303066判断选择 ...
- C语言 | C语言中的switch语句以及循环语句(入门版本)
================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...
- c语言中的switch语句中的break和continue的作用
#include <stdio.h>int main() {int k;char c;for(k=1,c='A'; c < 'F'; k++){switch(++c){case'A' ...
- C语言中的switch详解
switch语句:C语言中实现多分支选择的语句 例:输入一个分数等级,输出对应分数 switch(grade){case 'A':printf("85~100\n"); break ...
- 详解C语言中的switch语句
文章目录 switch语句格式 条件合并的写法 break语句 default语句 switch语句与if..else语句区别 switch语句格式 switch(表达式) {case 常量表达式1: ...
- C语言中的switch语句
switch语句的一般形式: switch (表达式) {case 常量表达式1: 语句1case 常量表达式2: 语句2┇case 常量表达式n: 语句ndefault: 语句n+1 } 说明: = ...
- C语言中的switch语句基本用法
switch语句: 实际生活中,需要做出很多选择,大家都知道做选择可以使用if语句,但是如果选择太多,if语句使用起来就会很繁琐,这个时候就需要一个能将代码简化的语句,也就是我们今天的主角switch ...
- 用C语言中的switch语句实现奇偶数的判断
#define _CRT_SECURE_NO_WARNINGD 1 #include<stdio.h> #define _CRT_SECURE_NO_WARNINGD 1 #include ...
最新文章
- 拼音开头有什么字_语文基础 孩子刚上一年级学习拼音太难了?家长在家这样教真不比老师差!...
- 直连数据库实时更新数据,可视化报表这么做简直牛
- DataSet.Tables[].Rows[][]的用法
- Kubernetes详解(二十)——ReplicaSet控制器
- 易宝支付php接口,【图片】易宝支付PHP版测试、懂的进【php吧】_百度贴吧
- cuda+cudnn下载安装
- 半正定矩阵 正定
- 【工具使用】git使用--将本地代码上传到icode代码库踩坑总结
- 【智能无线小车系列二】车体的组装
- 2.灰尘对计算机的影响,灰尘对电脑有影响不?
- 全新的服务器debian/ubuntu---校准时间、更新apt,设置ssh远程访问
- [教程] ESP32+TFT+分光棱镜实现透明小电视
- 全集然文明nbsp;(请点击图标进…
- 你所不了解的微服务架构
- flink sql 知其所以然(二)| 自定义 redis 数据维表(附源码)
- 关于博客的书写——读刘末鹏博客学习方法篇有感
- c语言0x1234占两个字节,C语言考试必考知识点
- Win10卸载微软sql服务器,win10系统彻底卸载server 2008数据库的设置办法
- JS实现字符串模糊匹配
- android原生农场壁纸,Android 6.0高清壁纸下载-Android 6.0原生壁纸高清免费打包下载-东坡下载...