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项目中使用init()
Apr 12 Golang
Go语言带缓冲的通道实现
Apr 26 Golang
golang 如何用反射reflect操作结构体
Apr 28 Golang
Golang 使用Map实现去重与set的功能操作
Apr 29 Golang
解决golang post文件时Content-Type出现的问题
May 02 Golang
解决goland 导入项目后import里的包报红问题
May 06 Golang
golang中的并发和并行
May 08 Golang
Golang中异常处理机制详解
Jun 08 Golang
golang中字符串MD5生成方式总结
Jul 04 Golang
Golang 字符串的常见操作
Apr 19 Golang
Golang 实现 WebSockets 之创建 WebSockets
Apr 24 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中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
深入认识JavaScript中的函数
2007/01/22 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
2019/07/30 Javascript
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
wxPython实现画图板
2020/08/27 Python
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
函授本科毕业生自我鉴定
2013/10/16 职场文书
银行实习生的自我评价
2014/01/13 职场文书
《孔子拜师》教学反思
2014/02/24 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
学校四群教育实施方案
2014/06/12 职场文书
民政局离婚协议书范本
2014/10/20 职场文书
安全隐患整改报告
2014/11/06 职场文书
单位实习介绍信
2015/05/05 职场文书
初中军训感言
2015/08/01 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android