[go]if&switch
Posted iiiiiher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[go]if&switch相关的知识,希望对你有一定的参考价值。
- if改为switch
func main() {
for i := 0; i < 3; i++ {
if i == 0 {
fmt.Println("0")
}else if i == 1 || i == 2 {
fmt.Println("1 or 2")
} else {
fmt.Println("not 0-2")
}
}
}
//可以改写为:
func main() {
for i := 0; i < 3; i++ {
switch {
case i == 0:
fmt.Println("0")
case i == 1 || i == 2:
fmt.Println("1 or 2")
default:
fmt.Println("not 0-2")
}
}
}
//也可以改写为这样
func main() {
for i := 0; i < 3; i++ {
switch i {
case 0:
fmt.Println("0")
case 1, 2: //任意一个匹配即可
fmt.Println("1 or 2")
default:
fmt.Println("not 0-2")
}
}
}
//对于条件较为复杂 使用
switch{
case i>10 && i<20
}
- default分支说明
//default分支不是必须
func main() {
for i := 0; i < 3; i++ {
switch i {
case 0:
fmt.Println("0")
case 1, 2:
fmt.Println("1 or 2")
}
}
}
//default位置可选
func main() {
for i := 0; i < 3; i++ {
switch i {
default:
fmt.Println("not 0-2")
case 0:
fmt.Println("0")
case 1, 2:
fmt.Println("1 or 2")
}
}
}
//case条件不能重复
func main() {
i:=0
switch i {
case 0:
fmt.Println("0")
case 0:
fmt.Println("0")
}
}
//.main.go:10:2: duplicate case 0 in switch
//case后隐含break, 无需手动去break, 一旦匹配一个分支, 即跳出整个switch
func main() {
i := 3
switch {
case i > 0:
fmt.Println("i>0")
case i > 2:
fmt.Println("i>2")
}
}
//i>0
- fallthrough穿透(失效)下一层的条件, 执行下一层语句.
func main() {
i := 1
switch {
case i > 0:
fmt.Println("i>0")
fallthrough
case i > 2:
fmt.Println("i>2")
}
}
//i>0
//i>2
//fallthrough决定该层要不要穿透,如果该层无,则直接break,终结整个switch
func main() {
i := 3
switch {
case i > 0:
fmt.Println("i>0")
case i > 2:
fmt.Println("i>2")
fallthrough
default:
fmt.Println("not 0 1 2 3")
}
}
//i>0
//一旦一层被fallthrough, 其他的条件即使不成立, 也会被执行(无视条件了)
func main() {
i := 1
switch {
case i > 0:
fmt.Println("i>0")
fallthrough
case i > 2:
fmt.Println("i>2")
default:
fmt.Println("not 0 1 2 3")
}
}
//i>0
//i>2
func main() {
i := 0
switch {
case i > 0:
fmt.Println("i>0")
fallthrough
case i > 2:
fmt.Println("i>2")
fallthrough
default:
fmt.Println("not 0 1 2 3")
}
}
//not 0 1 2 3
//fallthrough不允许放最后一个分支
func main() {
i := 1
switch {
case i > 0:
fmt.Println("i>0")
fallthrough
case i > 2:
fmt.Println("i>2")
fallthrough
}
}
//.main.go:13:3: cannot fallthrough final case in switch
//switch满足条件处开始执行
func main() {
s := "abcd"
switch s[2] {
case 'a':
fmt.Println("a")
fallthrough
case 'b':
fmt.Println("b")
fallthrough
case 'c':
fmt.Println("c")
fallthrough
default:
fmt.Println("default case")
}
}
//c
//default case
以上是关于[go]if&switch的主要内容,如果未能解决你的问题,请参考以下文章