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 30 Golang
解决golang post文件时Content-Type出现的问题
May 02 Golang
解决Goland 同一个package中函数互相调用的问题
May 06 Golang
Goland使用Go Modules创建/管理项目的操作
May 06 Golang
Golang Gob编码(gob包的使用详解)
May 07 Golang
golang中的并发和并行
May 08 Golang
go语言中http超时引发的事故解决
Jun 02 Golang
golang中的struct操作
Nov 11 Golang
Go语言的协程上下文的几个方法和用法
Apr 11 Golang
Golang 实现 WebSockets 之创建 WebSockets
Apr 24 Golang
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
Jun 14 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利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
JavaScript在for循环中绑定事件解决事件参数不同的情况
2014/01/20 Javascript
浅谈js中变量初始化
2015/02/03 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
2020/04/03 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
python使用any判断一个对象是否为空的方法
2014/11/19 Python
Python中字符编码简介、方法及使用建议
2015/01/08 Python
简单介绍Python中的JSON模块
2015/04/08 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
用python实现的线程池实例代码
2018/01/06 Python
Python实现FTP文件传输的实例
2019/07/07 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
英国足球店:UK Soccer Shop
2017/11/19 全球购物
初中生三年学习生活的自我评价
2013/11/03 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
大学推普周活动总结
2015/05/07 职场文书
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android
V Rising 服务器搭建图文教程
2022/06/16 Servers