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缓冲channel和非缓冲channel的区别说明
Apr 25 Golang
彻底理解golang中什么是nil
Apr 29 Golang
golang协程池模拟实现群发邮件功能
May 02 Golang
Go标准容器之Ring的使用说明
May 05 Golang
浅谈Golang 切片(slice)扩容机制的原理
Jun 09 Golang
go goroutine 怎样进行错误处理
Jul 16 Golang
golang内置函数len的小技巧
Jul 25 Golang
Go语言读取txt文档的操作方法
Jan 22 Golang
victoriaMetrics库布隆过滤器初始化及使用详解
Apr 05 Golang
Golang MatrixOne使用介绍和汇编语法
Apr 19 Golang
实现GO语言对数组切片去重
Apr 20 Golang
GoFrame框架数据校验之校验结果Error接口对象
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 magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
jquery解析xml字符串简单示例
2014/04/11 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
Element Input组件分析小结
2018/10/11 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
Python sys.argv用法实例
2015/05/28 Python
python中实现精确的浮点数运算详解
2017/11/02 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
三方合作协议书范本
2014/04/18 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
python requests模块的使用示例
2021/04/07 Python
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang