四十、Go 语言 switch 语句



四十、Go 语言 switch 语句

Go 语言 switch 语句 根据不同条件执行不同动作

Go 语言 switch 语句 中的每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止

switch 语句执行的过程从上至下,直到找到匹配项后停止匹配

Go 语言中的 switch 语句与其它语言不通,匹配项后不需要再加 break 语句

语法

Go 语言 switch 语句语法格式如下

switch var1 {          
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值

var1 val1 val2 类型不限于常量或整数,但必须是相同的类型或者最终结果为相同类型的表达式

我们可以同时测试多个可能符合条件的值,使用逗号分割它们

switch var1 {
    case val1,val2,val3:
        ...
    case val4:
        ...
    default:
        ...
}

范例

package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var grade string = "B"
   var marks int = 90

   switch marks {
      case 90: grade = "A"
      case 80: grade = "B"
      case 50,60,70 : grade = "C"
      default: grade = "D"  
   }

   switch {
      case grade == "A" :
         fmt.Printf("优秀!\n" )     
      case grade == "B", grade == "C" :
         fmt.Printf("良好\n" )      
      case grade == "D" :
         fmt.Printf("及格\n" )      
      case grade == "F":
         fmt.Printf("不及格\n" )
      default:
         fmt.Printf("差\n" );
   }
   fmt.Printf("你的等级是 %s\n", grade );      
}

编译运行以上 Go 语言范例,输出结果如下

$ go run main.go
优秀!
你的等级是 A

Type Switch ( Switch 语句类型判断)

Go 语言 switch 语句还可以用来判断某个 interface 变量中实际存储的变量类型,这种语句我们称之为 Type Switch

Type Switch 语法格式如下

switch x.(type){
    case type:
       statement(s);      
    case type:
       statement(s); 
    /* 我们可以定义任意个数的case */
    default: /* 可选 */
       statement(s);
}

范例

package main

import "fmt"

func main() {
   var x  = 13

   switch i := x.(type) {
      case nil:   
         fmt.Printf(" x 的类型 :%T",i)                
      case int:   
         fmt.Printf("x 是 int 型")                       
      case float64:
         fmt.Printf("x 是 float64 型")           
      case func(int) float64:
         fmt.Printf("x 是 func(int) 型")                      
      case bool, string:
         fmt.Printf("x 是 bool 或 string 型" )       
      default:
         fmt.Printf("未知型")     
   }   
}

编译运行以上 Go 语言范例,输出结果如下

$ go run main.go
x 是 int 型
------本页内容已结束,喜欢请分享-456源码网------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容