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 相关文章推荐
解决Golang中goroutine执行速度的问题
May 02 Golang
golang 比较浮点数的大小方式
May 02 Golang
浅谈golang 中time.After释放的问题
May 05 Golang
Golang标准库syscall详解(什么是系统调用)
May 25 Golang
Golang生成Excel文档的方法步骤
Jun 09 Golang
再次探讨go实现无限 buffer 的 channel方法
Jun 13 Golang
golang中字符串MD5生成方式总结
Jul 04 Golang
浅谈GO中的Channel以及死锁的造成
Mar 18 Golang
Golang使用Panic与Recover进行错误捕获
Mar 22 Golang
Golang bufio详细讲解
Apr 21 Golang
GoFrame框架数据校验之校验结果Error接口对象
Jun 21 Golang
Go中使用gjson来操作JSON数据的实现
Aug 14 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项目打包方法
2008/02/18 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
jquery批量控制form禁用的代码
2013/08/06 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
深入理解JS addLoadEvent函数
2016/05/20 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
Python with用法实例
2015/04/14 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
Python实现各种排序算法的代码示例总结
2015/12/11 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
2018/03/15 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
详解Django 时间与时区设置问题
2019/07/23 Python
浅谈Python type的使用
2019/11/19 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
工程班组长岗位职责
2013/12/30 职场文书
网管求职信
2014/03/03 职场文书
微电影大赛策划方案
2014/06/05 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python
分享Python获取本机IP地址的几种方法
2022/03/17 Python