您的位置:首页 > 编程语言 > Go语言

go语言选择语句 switch case

2017-03-15 17:08 253 查看
根据传入条件的不同,选择语句会执行不同的语句。下面的例子根据传入的整型变量i的不同而打印不同的内容:

switch i {
case 0:
fmt.Printf("0")
case 1:
fmt.Printf("1")
case 2:
fallthrough
case 3:
fmt.Printf("3")
case 4, 5, 6:
fmt.Printf("4, 5, 6")
default:
fmt.Printf("Default")
}


运行上面的案例,将会得到如下结果: 

 i = 0时,输出0; 

 i = 1时,输出1; 

 i = 2时,输出3;

 i = 3时,输出3; 

 i = 4时,输出4, 5, 6; 

 i = 5时,输出4, 5, 6; 

 i = 6时,输出4, 5, 6; 

 i = 其他任意值时,输出Default。

比较有意思的是,switch后面的表达式甚至不是必需的,比如下面的例子: 

switch {
case 0 <= Num && Num <= 3:
fmt.Printf("0-3")
case 4 <= Num && Num <= 6:
fmt.Printf("4-6")
case 7 <= Num && Num <= 9:
fmt.Printf("7-9") //http://www.cnblogs.com/osfipin/
}


在使用switch结构时,我们需要注意以下几点: 

 左花括号{必须与switch处于同一行; 

 条件表达式不限制为常量或者整数; 

 单个case中,可以出现多个结果选项; 

 与C语言等规则相反,Go语言不需要用break来明确退出一个case; 

 只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case; 

 可以不设定switch之后的条件表达式,在此种情况下,整个switch结构与多个if...else...的逻辑作用等同。

再比如下面的例子

func (this *multiSort) Less(i, j int) bool {
p, q := &this.changes[i], &this.changes[j]
// Try all but the last comparison.
var k int
for k = 0; k < len(this.less)-1; k++ {
less := this.less[k]
switch {
case less(p, q):
// p < q, so we have a decision.
return true
case less(q, p):
// p > q, so we have a decision.
return false
}
// p == q; try the next comparison.
}
// All comparisons to here said "equal", so just return whatever
// the final comparison reports.
return this.less[k](p, q)
}
其中,less是一个函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  go语言 go switch case 选择