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 正则匹配效率详解
Apr 25 Golang
golang 在windows中设置环境变量的操作
Apr 29 Golang
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
May 05 Golang
Golang 获取文件md5校验的方法以及效率对比
May 08 Golang
go开发alertmanger实现钉钉报警
Jul 16 Golang
go使用Gin框架利用阿里云实现短信验证码功能
Aug 04 Golang
GO语言异常处理分析 err接口及defer延迟
Apr 14 Golang
Golang获取List列表元素的四种方式
Apr 20 Golang
Golang 结构体数据集合
Apr 22 Golang
Golang 切片(Slice)实现增删改查
Apr 22 Golang
详解Go语言中Get/Post请求测试
Jun 01 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
如何去掉文章里的 html 语法
2006/10/09 PHP
PHP产生随机字符串函数
2006/12/06 PHP
thinkphp连贯操作实例分析
2014/11/22 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
Div Select挡住的解决办法
2008/08/07 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
python实现提取百度搜索结果的方法
2015/05/19 Python
python 产生token及token验证的方法
2018/12/26 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
C#可否对内存进行直接的操作
2015/02/26 面试题
制药工程专业应届生求职信
2013/09/24 职场文书
自荐信要包含哪些内容
2013/11/06 职场文书
应届生新闻编辑求职信
2013/11/19 职场文书
个人对照检查材料
2014/02/12 职场文书
小学毕业感言300字
2014/02/19 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
医师定期考核实施方案
2014/05/07 职场文书
小学推普周活动总结
2015/05/07 职场文书
电力培训学习心得体会
2016/01/11 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript
利用Python判断你的密码难度等级
2021/06/02 Python
mysql 排序失效
2022/05/20 MySQL