基本语法

在讲述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相关推荐

  1. Go 语言中的switch分支

    switch语句常用于基于大量不同条件来执行不同动作,每一个条件对应一个case分支. switch语句的执行过程从上至下,直到找到匹配项,匹配项后面也不需要再加break. 每一个switch语句只 ...

  2. 平均年龄c加加语音用switch_C语言中的SWITCH是什么意思?

    展开全部 Switch用在编程中,如C语言中它经常跟Case一起使用,是一个32313133353236313431303231363533e78988e69d8331333366303066判断选择 ...

  3. C语言 | C语言中的switch语句以及循环语句(入门版本)

    ================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...

  4. 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' ...

  5. C语言中的switch详解

    switch语句:C语言中实现多分支选择的语句 例:输入一个分数等级,输出对应分数 switch(grade){case 'A':printf("85~100\n"); break ...

  6. 详解C语言中的switch语句

    文章目录 switch语句格式 条件合并的写法 break语句 default语句 switch语句与if..else语句区别 switch语句格式 switch(表达式) {case 常量表达式1: ...

  7. C语言中的switch语句

    switch语句的一般形式: switch (表达式) {case 常量表达式1: 语句1case 常量表达式2: 语句2┇case 常量表达式n: 语句ndefault: 语句n+1 } 说明: = ...

  8. C语言中的switch语句基本用法

    switch语句: 实际生活中,需要做出很多选择,大家都知道做选择可以使用if语句,但是如果选择太多,if语句使用起来就会很繁琐,这个时候就需要一个能将代码简化的语句,也就是我们今天的主角switch ...

  9. 用C语言中的switch语句实现奇偶数的判断

    #define _CRT_SECURE_NO_WARNINGD 1 #include<stdio.h> #define _CRT_SECURE_NO_WARNINGD 1 #include ...

最新文章

  1. 拼音开头有什么字_语文基础 孩子刚上一年级学习拼音太难了?家长在家这样教真不比老师差!...
  2. 直连数据库实时更新数据,可视化报表这么做简直牛
  3. DataSet.Tables[].Rows[][]的用法
  4. Kubernetes详解(二十)——ReplicaSet控制器
  5. 易宝支付php接口,【图片】易宝支付PHP版测试、懂的进【php吧】_百度贴吧
  6. cuda+cudnn下载安装
  7. 半正定矩阵 正定
  8. 【工具使用】git使用--将本地代码上传到icode代码库踩坑总结
  9. 【智能无线小车系列二】车体的组装
  10. 2.灰尘对计算机的影响,灰尘对电脑有影响不?
  11. 全新的服务器debian/ubuntu---校准时间、更新apt,设置ssh远程访问
  12. [教程] ESP32+TFT+分光棱镜实现透明小电视
  13. 全集然文明nbsp;(请点击图标进…
  14. 你所不了解的微服务架构
  15. flink sql 知其所以然(二)| 自定义 redis 数据维表(附源码)
  16. 关于博客的书写——读刘末鹏博客学习方法篇有感
  17. c语言0x1234占两个字节,C语言考试必考知识点
  18. Win10卸载微软sql服务器,win10系统彻底卸载server 2008数据库的设置办法
  19. JS实现字符串模糊匹配
  20. android原生农场壁纸,Android 6.0高清壁纸下载-Android 6.0原生壁纸高清免费打包下载-东坡下载...

热门文章

  1. phpwechat的使用
  2. Bugtags 远程配置功能介绍
  3. VanillaNet
  4. Pycharm mac 语法检测失效
  5. 计算机软件升级流程,7个方法帮你轻松升级Windows 10计算机!
  6. 恋爱话术小程序源码-土味情话,恋爱导师支持多种流量主模式
  7. 计算机二级建议练多长时间,计算机二级复习建议
  8. Python第一阶段学习 day10
  9. 计算机投标书开题报告,投标书开题报告.doc
  10. 在网吧如何避开还原精灵保存文件