Go中的条件语句Switch示例详解

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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Go语言中的if条件语句使用详解

    if语句 if语句包含一个布尔表达式后跟一个或多个语句. 语法 if语句在Go编程语言的语法是: 复制代码 代码如下: if(boolean_expression) {    /* statement(s) will execute if the boolean expression is true */ } 如果布尔表达式的值为 true,那么if语句里面代码块将被执行.如果if语句的结束(右大括号后)布尔表达式的值为false,那么语句之后第一行代码会被执行. 流程图: 例子: 复制代码 代

  • golang switch语句的灵活写法介绍

    switch是很容易理解的,先来个代码,运行起来 看看你的操作系统是什么吧 package main import ( "fmt" "runtime" ) func main() { fmt.Print("Go runs on ") switch os := runtime.GOOS; os { case "darwin": fmt.Println("OS X.") case "linux&quo

  • Golang中switch语句和select语句的用法教程

    本文主要给大家介绍了关于Golang中switch和select用法的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 一.switch语句 switch语句提供了一个多分支条件执行的方法.每一个case可以携带一个表达式或一个类型说明符.前者又可被简称为case表达式.因此,Go语言的switch语句又分为表达式switch语句和类型switch语句. 1.表达式switch语句 var name string ... switch name { case "Golang"

  • 深入剖析Go语言编程中switch语句的使用

    switch语句可以让一个变量对反对值的列表平等进行测试.每个值被称为一个的情况(case),变量被接通检查每个开关盒(switch case). 在Go编程,switch有两种类型. 表达式Switch - 在表达式switch,case包含相比较,switch表达式的值. 类型Switch - 在这类型switch,此时含有进行比较特殊注明开关表达式的类型. 表达式Switch 在Go编程语言中表达switch语句的语法如下: 复制代码 代码如下: switch(boolean-expres

  • Go语言中的switch用法实例分析

    本文实例讲述了Go语言中的switch用法.分享给大家供大家参考.具体分析如下: 这里你可能已经猜到 switch 可能的形式了. case 体会自动终止,除非用 fallthrough 语句作为结尾. 复制代码 代码如下: package main import (  "fmt"  "runtime" ) func main() {  fmt.Print("Go runs on ")  switch os := runtime.GOOS; os

  • Go语言每天必学之switch语句

    Go 语言 switch 语句 switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止.. switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break 语法 Go 编程语言中 switch 语句的语法如下: switch var1 { case val1: ... case val2: ... default: ... } 变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值.类型

  • Go中的条件语句Switch示例详解

    Switch简介 Go的switch的基本功能和C.Java类似: switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止. 匹配项后面也不需要再加 break. 特点: switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case 重点介绍Go当中的Switch的两个特别点:** 表达式判断为true还需要执行后面的 case,可以使用 fallthrough type-switch 来判断某个 i

  • Java7到Java17之Switch语句进化史示例详解

    目录 前言 Java 7 Java 8 Java 12 Java 13 Java 14 Java 17 总结 前言 自 Java 7 以来,java 中的 switch 语句经历了快速发展.因此,在本文中,我们将通过示例讨论 switch 语句从 java 7 到 java 17 的演变或变化. Java 7 在 Java 7 之前,switch case 中只能使用整数,这个语法持续了很长的一段时间. int value = 5; switch (value) { case 1: System

  • Oracle 数据仓库ETL技术之多表插入语句的示例详解

    目录 创建示例表 无条件的 INSERT ALL 语句 有条件的 INSERT ALL 语句 有条件的 INSERT FIRST 语句 多表插入语句的限制 大家好!我是只谈技术不剪发的 Tony 老师. ETL(提取.转换.加载)是指从源系统中提取数据并将其放入数据仓库的过程.Oracle 数据库为 ETL 流程提供了丰富的功能,今天我们就给大家介绍一下 Oracle 多表插入语句,也就是INSERT ALL语句. 创建示例表 我们首先创建一个源数据表和三个目标表: CREATE TABLE s

  • Go语音开发中常见Error类型处理示例详解

    目录 前言 透明错误处理策略 带来的问题 哨兵(Sentinel)错误处理策略 带来的问题 1.对errors.Error()的依赖 2.定义的错误类型会被公开 Error types 带来的问题 不透明错误处理策略(Opaque errors) 带来的问题 总结 前言 上文我们了解了 Error 在Go 中的设计理念.单从理念上来看, Error 的设计似乎有利于逻辑处理.但实际上,在开发过程中,我们还会遇到各种各样的困难.为了优化开发的流程,开发者们发明了很多处理 Error 的做法.今天我

  • Golang中的错误处理的示例详解

    目录 1.panic 2.包装错误 3.错误类型判断 4.错误值判断 1.panic 当我们执行panic的时候会结束下面的流程: package main import "fmt" func main() { fmt.Println("hello") panic("stop") fmt.Println("world") } 输出: go run 9.go hellopanic: stop 但是panic也是可以捕获的,我们可

  • Go语言中的字符串处理方法示例详解

    1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号("")或反引号(``)定义. 双引号:"", 用于单行字符串. 反引号:``,用于定义多行字符串,内部会原样解析. 示例: // 单行 "心有猛虎,细嗅蔷薇" // 多行 ` 大风歌 大风起兮云飞扬. 威加海内兮归故乡. 安得猛士兮守四方! ` 字符串支持转义

  • C++中#include头文件的示例详解

    fstream是C++ STL中对文件操作的合集,包含了常用的所有文件操作.在C++中,所有的文件操作,都是以流(stream)的方式进行的,fstream也就是文件流file stream. 最常用的两种操作为: 1.插入器(<<) 向流输出数据.比如说打开了一个文件流fout,那么调用fout<<"Write to file"<<endl;就表示把字符串"Write to file"写入文件并换行. 2.析取器(>>

  • Python中bisect的用法及示例详解

    bisect是python内置模块,用于有序序列的插入和查找. 查找: bisect(array, item) 插入: insort(array,item) 查找 import bisect a = [1,4,6,8,12,15,20] position = bisect.bisect(a,13) print(position) # 用可变序列内置的insert方法插入 a.insert(position,13) print(a) 输出: 5 [1, 4, 6, 8, 12, 13, 15, 2

  • Python中三种花式打印的示例详解

    目录 1. 引言 2. 打印圣诞树 2.1 问题描述 2.2 问题分析 3. 打印字母版圣诞树 3.1 问题描述 3.2 问题分析 4. 打印字母版菱形 4.1 问题描述 4.2 问题分析 5. 总结 1. 引言 在Python中有很多好玩的花式打印,对厉害的高手来说可能是小菜一碟,对入门的小白来说往往让人望而退步,我们今天就来挑战下面三个常见的花式打印吧... 2. 打印圣诞树 2.1 问题描述 编码实现函数christmas_tree(height),该函数输入参数为一个整数表示圣诞树的高度

  • 详解Python中生成随机数据的示例详解

    目录 随机性有多随机 加密安全性 PRNG random 模块 数组 numpy.random 相关数据的生成 random模块与NumPy对照表 CSPRNG 尽可能随机 os.urandom() secrets 最佳保存方式 UUID 工程随机性的比较 在日常工作编程中存在着各种随机事件,同样在编程中生成随机数字的时候也是一样,随机有多随机呢?在涉及信息安全的情况下,它是最重要的问题之一.每当在 Python 中生成随机数据.字符串或数字时,最好至少大致了解这些数据是如何生成的. 用于在 P

随机推荐