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 相关文章推荐
golang中的空slice案例
Apr 27 Golang
解决Golang中ResponseWriter的一个坑
Apr 27 Golang
go类型转换及与C的类型转换方式
May 05 Golang
go语言基础 seek光标位置os包的使用
May 09 Golang
go语言使用Casbin实现角色的权限控制
Jun 26 Golang
golang 实用库gotable的具体使用
Jul 01 Golang
Go语言基础函数基本用法及示例详解
Nov 17 Golang
Go语言读取txt文档的操作方法
Jan 22 Golang
golang的文件创建及读写操作
Apr 14 Golang
Golang 入门 之url 包
May 04 Golang
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
Jun 14 Golang
Go Grpc Gateway兼容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
帅气的琦玉老师
2020/03/02 日漫
用PHP实现登陆验证码(类似条行码状)
2006/10/09 PHP
十天学会php(2)
2006/10/09 PHP
抓取YAHOO股票报价的类
2009/05/15 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
PDO::commit讲解
2019/01/27 PHP
jQuery 使用手册(四)
2009/09/23 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
Python异常学习笔记
2015/02/03 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
python实现事件驱动
2018/11/21 Python
Python二元赋值实用技巧解析
2019/10/25 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
入党自荐书范文
2014/03/09 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
银行稽核岗位职责
2015/04/13 职场文书
小学生家长意见
2015/06/03 职场文书
公司的力量观后感
2015/06/05 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
python爬虫selenium模块详解
2021/03/30 Python
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL