Go关键字--switch


友情推广
在这里插入图片描述

switch

switch用来实现条件选择器,与select有着类似的功能,只是switch中的case判断的是一个通信事件是否完成,而switch中的case判断的是值是否相等。switch与select还有一个不同之处在于switch中的case可以使用逗号来分割多种匹配情况,而select中的case只能是一个通信事件。

switch选择器的语法格式是:

switch 变量 {
    case "A","a":
        // 当变量值等于大写A,或者小写a时,进入这个分支
        // do something
    case "B","b":
        // 当变量值等于大写B,或者小写b时,进入这个分支
        // do something
    case "C":
        // do something
    default:
        // 上述条件
        // do something
}

关于switch基础的用法,请看下边示例:

package main

import (
   "fmt"
)

func main() {
   var str = "a"
   switch str {
   case "A", "a":
   	fmt.Println("A or a")
   case "B", "b":
   	fmt.Println("B or b")
   default:
   	fmt.Println("I don't know")
   }
}

switch除了作为条件选择器,根据变量值来匹配case条件外,还能用于类型查询,switch用于类型查询时,switch后边可以接表达式。请看下边示例代码:

package main

import (
	"fmt"
)

func main() {
	var ch interface{} = "hello world"
	switch val := ch.(type) {
	case string:
		fmt.Println("数据类型是:string,值是:", val)
	case int:
		fmt.Println("数据类型是:int,值是:", val)
	default:
		fmt.Println("default", val)
	}
}

switch只能与条件查询配合使用时,switch后边的那个变量才能使用表达式,如上边

val := ch.(type)

首先获取了赋值给ch的那个变量,接着在case中查询那个变量的类型,匹配成功后,进入对应的case分支,执行分支中的代码。

在使用类型查询时,也可以将ch.(type)的返回值忽略,如示例代码:

switch 变量.(type) {
    case int:
    // do something
    default:
    // do something
}

golang中的switch与c/c++不同,在c/c++中,如果在case中不使用break结束分支,则会继续执行这个case下边的case分支。在golang中,不用在每一个case中使用break来结束分支,当case分支语句执行完成后,不管有没有break,golang都会退出当前选择器代码块。在switch中使用break,只是用于在case分支中提前退出选择器代码块。

case

case是条件判断,这个关键字只能在switch和select中存在。关于case的用法,请查询switch和select关键字的介绍。

default

default表示默认选择的意思,在golnag中,default只能在switch和select中使用,党switch或select中所有的case条件都不满足的时候,才会执行default分支。关于default的用法,请查询switch和select关键字。

猜你喜欢

转载自blog.csdn.net/hzwy23/article/details/82793779