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二维切片初始化的实现
Apr 08 Golang
golang json数组拼接的实例
Apr 28 Golang
goland设置颜色和字体的操作
May 05 Golang
golang gopm get -g -v 无法获取第三方库的解决方案
May 05 Golang
golang中的并发和并行
May 08 Golang
go语言基础 seek光标位置os包的使用
May 09 Golang
Golang标准库syscall详解(什么是系统调用)
May 25 Golang
简单聊聊Golang中defer预计算参数
Mar 25 Golang
Golang日志包的使用
Apr 20 Golang
Golang bufio详细讲解
Apr 21 Golang
GO中sync包自由控制并发示例详解
Aug 05 Golang
Go gorilla securecookie库的安装使用详解
Aug 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 文件缓存的性能测试
2010/04/25 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
学习php分页代码实例
2013/10/24 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
第二章之Bootstrap 页面排版样式
2016/04/25 Javascript
JS之相等操作符详解
2016/09/13 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
2017/02/26 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
Python实现简单的代理服务器
2015/07/25 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
Python程序暂停的正常处理方法
2019/11/07 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
2019年c语言经典面试题目
2016/08/17 面试题
酒店员工职业生涯规划
2014/02/25 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
个人担保书范文
2014/05/20 职场文书
初中班主任教育随笔
2015/08/15 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书