LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭
Switch和select

一、两种类型
1)表达式Switch:case包含与switch表达式的值进行比较的表达式
2)类型Switch:case包含与特殊注释的switch表达式的类型进行比较的表达式

二、举例
1)类型Switch【不完整的类型switch】
func main(){
    grade:=“B”
    switch marks:=90;marks{ //初始化switch语句
    case 90:
        grade = "A"
    case 80:
        grade = "B"
    case 60,70:
        grade = "C"
    default:
        grade = "D"
}
fmt.printf(grade)
}

.2 类型switch【完整的类型switch】
func main(){
    grade:=“E”
    marks:= 90
    switch {
    case marks>90:
        grade = "A"
    case marks>=80:
        grade = "B"
    case marks>70:
        grade = "C"
    default:
        grade = "D"
}
switch{
case grade == "A":
    fmt.printf("成绩优秀")
case grade == "B":
    fmt.printf("成绩良好")
【多表达式写法:】
case grade == "C",grade == "D":
    fmt.printf("成绩一般")
}
}
**注意fallthrough则把当前case控制权交由下一个case语句判断
case grade == "A":
    fallthrough
case grade == "B":
    fmt.printf("成绩良好")

2)类型Switch【类型switch的初始化自语句需要判断的变量必须是具有接口类型的变量】
**关于这个部分,我会另起一篇文章讲述channel, 阻塞调用以及并发编程
var x interface{}
func main(){
    x=1 //修改x的值,查看返回结果的变化
    switch i :=x.(type){
    case nil:
        fmt.printf("这里是nil,x的类型是%T",i)
    case int:
        fmt.printf("这里是int,x的类型是%T",i)
    case float64:
        fmt.printf("这里是float64,x的类型是%T",i)
    default:
        fmt.printf("未知类型")
}

三、select语句【这种选择语句用于配合通道(channel)的读写操作,用于多个channel的并发读写操作】
func main(){
    a:=make(chan int,1024)
    b:=make(chan int,1024)

    for i:=0;i<10;i++{
        fmt.printf("第%d次",i)
        a<-1
        b<-1
        select{
        case<-a:
            fmt.println("from a")
        case<-b:
            fmt.println("from b")
    }
}
}

推荐文章
评论(0)
分享到
转载我的主页