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各时间字符串使用解析
Apr 02 Golang
Go语言切片前或中间插入项与内置copy()函数详解
Apr 27 Golang
golang中的空slice案例
Apr 27 Golang
Go语言中break label与goto label的区别
Apr 28 Golang
Golang之sync.Pool使用详解
May 06 Golang
golang 实用库gotable的具体使用
Jul 01 Golang
go goroutine 怎样进行错误处理
Jul 16 Golang
手把手教你导入Go语言第三方库
Aug 04 Golang
深入理解go slice结构
Sep 15 Golang
一文搞懂Golang 时间和日期相关函数
Dec 06 Golang
深入理解go缓存库freecache的使用
Feb 15 Golang
Go语言grpc和protobuf
Apr 13 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 strcmp使用说明
2010/04/22 PHP
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
如何写php守护进程(Daemon)
2015/12/30 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
vue实现点击追加选中样式效果
2019/11/01 Javascript
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
python自定义时钟类、定时任务类
2021/02/22 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
Python datetime模块使用方法小结
2020/06/18 Python
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
法律工作求职自荐信
2013/10/31 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
校优秀毕业生主要事迹
2014/05/26 职场文书
优秀教师单行材料
2014/12/16 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
培训讲师开场白
2015/06/01 职场文书
MYSQL 表的全面总结
2021/11/11 MySQL