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语言map与string的相互转换的实现
Apr 07 Golang
golang判断key是否在map中的代码
Apr 24 Golang
基于go interface{}==nil 的几种坑及原理分析
Apr 24 Golang
Go缓冲channel和非缓冲channel的区别说明
Apr 25 Golang
golang中的空slice案例
Apr 27 Golang
golang 实现对Map进行键值自定义排序
Apr 28 Golang
浅谈golang 中time.After释放的问题
May 05 Golang
Go标准容器之Ring的使用说明
May 05 Golang
Golang标准库syscall详解(什么是系统调用)
May 25 Golang
go goroutine 怎样进行错误处理
Jul 16 Golang
Go语言grpc和protobuf
Apr 13 Golang
Go web入门Go pongo2模板引擎
May 20 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
15种PHP Encoder的比较
2007/03/06 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
js 数组操作之pop,push,unshift,splice,shift
2014/01/29 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
2018/07/06 Javascript
Vue代码整洁之去重方法整理
2019/08/06 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
Python运算符重载用法实例分析
2015/06/01 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
python文件的md5加密方法
2016/04/06 Python
Python3爬虫全国地址信息
2019/01/05 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
Html5百叶窗效果的示例代码
2017/12/11 HTML / CSS
高中生学习总结的自我评价范文
2013/10/13 职场文书
室内设计自我鉴定
2013/10/15 职场文书
应届生污水处理求职信
2013/11/06 职场文书
党员公开承诺事项
2014/03/25 职场文书
运动会口号大全
2014/06/07 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python
pandas提升计算效率的一些方法汇总
2021/05/30 Python
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技