Golang中中switch语句和语句和select语句的用法教程语句的用法教程
本文主要给大家介绍了关于Golang中switch和select用法的相关内容,分享出来供大家参考学习,下面来一起看看详细的介
绍:
一、一、switch语句语句
switch语句提供了一个多分支条件执行的方法。每一个case可以携带一个表达式或一个类型说明符。前者又可被简称为case表
达式。因此,Go语言的switch语句又分为表达式switch语句和类型switch语句。
1、表达式、表达式switch语句语句
var name string
...
switch name {
case "Golang":
fmt.Println("Golang")
case "Rust":
fmt.Println("Rust")
default:
fmt.Println("PHP是世界上最好的语言")
}
Go会依照从上至下的顺序对每一条case语句中case表达式进行求值,只要被发现其表达式与switch表达式的结果相同,该
case语句就会被选中。其余的case语句会被忽略。 与if相同,switch语句还可以包含初始化字句,且其出现位置和写法如出
一辙:
names := []string{"Golang","java","PHP"}
switch name:=names[0];name {
case "Golang":
fmt.Println("Golang")
...
default:
fmt.Println("Unknown")
}
2、类型、类型switch语句语句
类型switch语句与一般形式有两点差别。第一点,紧随case关键字的不是表达式,而是类型说明符。类型说明符由若干个类型
字面量组成,且多个类型字面量之间由英文逗号分隔。第二点,它的switch表达式是非常特殊的。这种特殊的表达式也起到了
类型断言的作用,但其表现形式很特殊,如:v.(type) , 其中v必须代表一个接口类型的值。该类表达式只能出现在类型switch语
句中,且只能充当switch表达式。一个类型switch语句的示例如下:
v := 11
switch i := interface{}(v).(type) {
case int, int8, int16, int32, int64:
fmt.Println("A signed integer:%d. The type is %T. ", v, i)
case uint, uint8, uint16, uint32, uint64:
fmt.Println("A unsigned integer: %d. The type is %T. ", v, i)
default:
fmt.Println("Unknown!")
}
我们这里把switch表达式的结果赋给了一个变量。如此以来,我们就可以在该switch语句中使用这个结果了。这段代码被执行
后,输出:”A signed integer:11. The type is int. “
最后说一下fallthrough。它既是一个关键字,又可以代表一条语句。fallthrough语句可被包含在表达式switch语句中的case语
句中。它的作用是使控制权流转到下一个case。不过要注意fallthrough语句仅能作为case语句中的最后一条语句出现。并且,
包含它的case语句不是其所属switch语句的最后一条case语句。
二、二、select语句语句
golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。
示例:
ch1 := make (chan int, 1)
ch2 := make (chan int, 1)
...
评论0