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: ... }
Go 语言 switch 语句流程图
Go 语言 switch 语句执行流程如下
范例
/** * file: main.go * author: 简单教程(www.twle.cn) * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ 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); }
范例
/** * file: main.go * author: 简单教程(www.twle.cn) * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ 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 型