Go中的条件语句Switch示例详解


Posted in Golang onAugust 23, 2021

Switch简介

Go的switch的基本功能和C、Java类似:

  • switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。
  • 匹配项后面也不需要再加 break。

特点:

switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case

重点介绍Go当中的Switch的两个特别点:**

表达式判断为true还需要执行后面的 case,可以使用 fallthrough

type-switch 来判断某个 interface 变量中实际存储的变量类型

fallthrough

特点:

强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true。

示例:

package main
​
import "fmt"
​
func main() {
    switch {
    case true:
        fmt.Println("1、case条件语句为false!")
        fallthrough
    case false:
        fmt.Println("2、case条件语句为true!")
    default:
        fmt.Println("默认的case")
    }
}

代码分析:

  • 正常来说当执行完第一条语句以后不会执行第二个case,因为第二个casefalse而且已经执行完了第一个truecase
  • fallthrough关键字存在会强制执行第二个case

Type Switch

特点:

  • 判断某个 interface 变量中实际存储的变量类型
  • 可以枚举类型,值类型和引用类型都可以

语法格式:

switch x.(type){
    case type:
       statement(s);      
    case type:
       statement(s); 
    /* 你可以定义任意个数的case */
    default: /* 可选 */
       statement(s);
}

示例:

package main
​
import (
    "fmt"
    "go/types"
)
​
func main() {
    var inter interface{} = true
​
    //使用变量去代替接口当中的值并且判断类型
    switch i := inter.(type) {
    case types.Nil:
        fmt.Println("x的类型是:", i)
    case int:
        fmt.Println("x是int类型")
    case float64:
        fmt.Println("x是float64类型")
    case func(int2 int):
        fmt.Println("x是func(int)类型")
    case bool, string:
        fmt.Println("x是bool或string类型")
    default:
        fmt.Println("未知类型")
    }

可以直接判断接口当中的数据的数据类型

到此这篇关于Go中的条件语句Switch详解的文章就介绍到这了,更多相关Go条件语句Switch内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Golang 相关文章推荐
go语言-在mac下brew升级golang
Apr 25 Golang
golang 实现对Map进行键值自定义排序
Apr 28 Golang
Golang中interface{}转为数组的操作
Apr 30 Golang
Golang Gob编码(gob包的使用详解)
May 07 Golang
Golang 获取文件md5校验的方法以及效率对比
May 08 Golang
Golang的继承模拟实例
Jun 30 Golang
Golang中channel的原理解读(推荐)
Oct 16 Golang
Golang数据类型和相互转换
Apr 12 Golang
Go语言grpc和protobuf
Apr 13 Golang
Golang 结构体数据集合
Apr 22 Golang
Go 内联优化让程序员爱不释手
Jun 21 Golang
Go Plugins插件的实现方式
Aug 07 #Golang
使用GO语言实现Mysql数据库CURD的简单示例
Aug 07 #Golang
go使用Gin框架利用阿里云实现短信验证码功能
Aug 04 #Golang
手把手教你导入Go语言第三方库
Aug 04 #Golang
Go语言实现Base64、Base58编码与解码
Jul 26 #Golang
golang内置函数len的小技巧
Jul 25 #Golang
修改并编译golang源码的操作步骤
You might like
PHP中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
thinkphp分页实现效果
2016/10/13 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
JavaScript.The.Good.Parts阅读笔记(二)作用域&闭包&减缓全局空间污染
2010/11/16 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
Python3几个常见问题的处理方法
2019/02/26 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
Python 可视化神器Plotly详解
2020/12/26 Python
专科应届生求职信
2013/11/24 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
模范家庭事迹材料
2014/02/10 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
观后感的写法
2015/06/19 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
python如何正确使用yield
2021/05/21 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers