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 相关文章推荐
win10下go mod配置方式
Apr 25 Golang
golang 接口嵌套实现复用的操作
Apr 29 Golang
golang import自定义包方式
Apr 29 Golang
golang switch语句的灵活写法介绍
May 06 Golang
GoLang中生成UUID唯一标识的实现
May 08 Golang
go语言中http超时引发的事故解决
Jun 02 Golang
go web 预防跨站脚本的实现方式
Jun 11 Golang
使用GO语言实现Mysql数据库CURD的简单示例
Aug 07 Golang
Go语言 详解net的tcp服务
Apr 14 Golang
Golang gRPC HTTP协议转换示例
Jun 16 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入门源程序
2006/10/09 PHP
php 常用字符串函数总结
2008/03/15 PHP
php实现图片缩放功能类
2013/12/18 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
php字符串过滤与替换小结
2015/01/26 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
js实现兼容IE和FF的上下层的移动
2015/05/04 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
python设计模式大全
2016/06/27 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
python使用Matplotlib改变坐标轴的默认位置
2019/10/18 Python
Python更换pip源方法过程解析
2020/05/19 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
端午节活动总结报告
2015/02/11 职场文书
2015年中秋寄语
2015/07/31 职场文书
小学数学教学反思范文
2016/02/16 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript