Go语言学习之Switch语句的使用

目录
  • 基本语法
  • fallthrough使用方法
  • 多条件匹配
  • 判断接口(interface)类型
    • 空接口
    • 获取实际类型

基本语法

在讲述if-else时已经提到,如果有多个判断条件,Go语言中提供了Switch-Case的方式。如果switch后面不带条件相当于switch true

// Convert hexadecimal character to an int value
 switch {
 case '0' <= c && c <= '9':
     return c - '0'
 case 'a' <= c && c <= 'f':
     return c - 'a' + 10
 case 'A' <= c && c <= 'F':
     return c - 'A' + 10
 }
 return 0

fallthrough使用方法

默认情况下,case满足执行后会进行break,后面case即使满足条件也不再循环,如果想继续执行,则需要添加fallthrough,

package main

import "fmt"

func main() {
    i := 3
    switch i {
    case i > 0:
        fmt.Println("condition 1 triggered")
        fallthrough
    case i > 2:
        fmt.Println("condition 2 triggered")
        fallthrough
    default:
        fmt.Println("Default triggered")
    }
}

此时所有的case都会被执行

condition 1 triggered
condition 2 triggered
Default triggered

多条件匹配

如果同一个条件满足,也可以这样罗列到同一条件,相当于或条件

switch i {
    case 0, 1:
        f()
    default:
        g()
}

判断接口(interface)类型

空接口

后面我们会讲到接口,通过switch可以对type进行判断,获取接口的真实类型。

package main

import "fmt"

func main() {
    var value interface{}
    switch q:= value.(type) {
       case bool:
       fmt.Println("value is of boolean type")
       case float64:
       fmt.Println("value is of float64 type")
       case int:
       fmt.Println("value is of int type")
       default:
       fmt.Printf("value is of type: %T", q)
   }
}

在上面的例子中,我们定义了一个空接口

var value interface{}

同时使用switch来判断类型

switch q:= value.(type) {

由于空接口没有内容,所以类型为nil,触发了default

value is of type: <nil>

获取实际类型

我们对上面的例子进行改造,同时让空接口拥有实际的值,再来看看执行的效果

package main

import "fmt"

func valueType(i interface{}) {
    switch q:= i.(type) {
       case bool:
       fmt.Println("value is of boolean type")
       case float64:
       fmt.Println("value is of float64 type")
       case int:
       fmt.Println("value is of int type")
       default:
       fmt.Printf("value is of type: %T\n", q)

   }
}

func main() {
    person := make(map[string]interface{}, 0)

    person["name"] = "Alice"
    person["age"] = 21
    person["height"] = 167.64

    fmt.Printf("%+v\n", person)

    for _, value := range person {
        valueType(value)
    }
}

这里有几个还没有讲到的知识点:

  • 函数的定义方法
  • 定义了一个map,但是值的类型为空接口,意思就是可以是任何类型的值,这在接口章节还会详细讲解,所以大家看到这里不要纠结,继续往下看
  • 赋值时,特意给value不同的类型, string/int/float类型

最后通过循环将变量传给valueType函数,看看程序输出什么结果

map[age:21 height:167.64 name:Alice]
value is of type: string
value is of int type
value is of float64 type

到此这篇关于Go语言学习之Switch语句的使用的文章就介绍到这了,更多相关Go语言 Switch语句内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

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

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

  • Go语言基础switch条件语句基本用法及示例详解

    目录 概述 语法 第一种[switch 带上表达式] 第二种[switch 不带表达式] 第三种[switch 初始化,表达式] 注意 示例一[根据今天的日期打印今天星期几] 示例二[根据分数打印A,B,C,D] 示例三[算数] 概述 传入条件的不同,会执行不同的语句 每一个case分支都是唯一的,从上到下逐一测试,直到匹配为止. 语法 第一种[switch 带上表达式] switch 表达式 { case 表达式1,表达式2, ... : 语句块1 case 表达式3, 表达式4, ... :

  • 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

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

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

  • 深入剖析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语句的使用

    目录 基本语法 fallthrough使用方法 多条件匹配 判断接口(interface)类型 空接口 获取实际类型 基本语法 在讲述if-else时已经提到,如果有多个判断条件,Go语言中提供了Switch-Case的方式.如果switch后面不带条件相当于switch true // Convert hexadecimal character to an int value switch { case '0' <= c && c <= '9': return c - '0'

  • Go语言学习之条件语句使用详解

    目录 1.if...else判断语法 2.if嵌套语法 3.switch语句 4.类型switch语句 5.fallthrough关键字使用 小结 1.if...else判断语法 语法的使用和其他语言没啥区别. 样例代码如下: // 判断语句 func panduan(a int) { if a > 50 { fmt.Println("a > 50") } else if a < 30 { fmt.Println("a < 30") } el

  • Go语言学习之循环语句使用详解

    目录 1.for循环 2.for-each语法 3.break的使用 4.continue的使用 5.goto的使用 1.for循环 写法基本和其他语言一致,只是没有了while循环,用for代替while. 样例代码如下 // for循环 func loop1() { sum := 0 for i := 0; i < 100; i++ { sum += i } fmt.Printf("sum = %d\n", sum) // 和while循环一样 sum1 := 3 for s

  • C语言流程控制之switch语句详解

    switch语句结构 switch(表达式) { case 判断值1; 语句组1: break; case 判断值2: 语句组2: break; case 判断值3: 语句组3: break; -- case 判断值n: 语句组n: break; default: 语句组n+1: break; } 表达式是选择条件,可以是单个变量也可以是组合的表达式,其最终的结果必须是一整数值,{}内的所有内容是switch语句的主体,内含多个case分支,判断值必须是一常量,case分支根据判断值标识条件选择

  • Python为何不支持switch语句原理详解

    在这篇文章里,我们会聊一聊为什么 Python 决定不支持 switch 语句. 为什么想要聊这个话题呢? 主要是因为 switch 在其它语言中太常见了,而 Python 却不支持,这样的独特性本身就值得关注,而回答这个问题,也能更加看清 Python 在程序设计上的理念,了解 Python 在语法设计中的决策过程. 本文除了会详细分析 PEP-275 和 PEP-3103,还会介绍到 Python 最新的发展动态(PEP-622),即可能要引入的模式匹配(pattern matching)语

  • C语言入门篇--学习选择,if,switch语句以及代码块

    目录 1.什么是语句 2.选择语句(分支语句) 2.1if语句&注意事项 2.1.1语法结构 2.1.2悬空else 2.2switch语句&注意事项 2.2.1语法结构 2.2.2switch语句中的break 2.2.3switch语句中的default语句 2.2.4switch语句的嵌套 3.代码块 1.什么是语句 语句:C语言中由一个 ; 隔开的就是一条语句. 例如: int a = 10; printf("haha\n"); 10; 'A'; ; //空语句

  • 从头学习C语言之switch语句和分支嵌套

    目录 switch 语句: 注意事项: 分支结构的嵌套: 注意事项: 语句形式: 流程图: 示例: 总结 switch 语句: 一个 switch 语句允许测试一个变量等于多个值时的情况.每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查. 注意事项: 在case每一行的语句或程序块后面要加上break;(否则程序将会把所有程序块从前到后运行一遍. default是可选的,如果上面的case中没有符合的才会选择default(属于备选情况),但是如果不加defau

  • C语言switch 语句的用法详解

    C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况.例如,输入一个整数,输出该整数对应的星期几的英文表示: #include <stdio.h> int main(){ int a; printf("Input integer number:"); scanf("%d",&a); if(a==1){ printf("Monday\n&q

  • 详解C语言中条件判断语句if和switch的用法

    if 语句 用 if 语句可以构成分支结构,它根据给的条件进行判定,以决定执行哪个分支程序段. C 语言的 if 语句有三种基本形式 第一种形式: if(条件表达式) { 语句1: } if(条件表达式) { 语句1: } 这种形式运行顺序为:当条件表达式为真,执行语句1,否则,直接跳过语句1,执行后面的语句. 例子1: BOOL result = YES: if(result) { printf("result is true\n"); } BOOL result = YES: if

随机推荐