zoukankan      html  css  js  c++  java
  • [go]流程控制if&switch

    if语法

     if statement; condition {
    }
    
    func main() {
    	num := 10
    	if num%2 == 0 {
    		fmt.Println("even")
    	} else {
    		fmt.Println("odd")
    	}
    }
    
    //even
    
    func main() {
    	if num := 10; num%2 == 0 {
    		fmt.Println("even")
    	} else {
    		fmt.Println("odd")
    	}
    }
    
    //even
    
    func main() {
    	num := 99
    	if num < 50 {
    		fmt.Println("<50")
    	} else if num >= 51 && num <= 100 {
    		fmt.Println("51<=num<=100")
    	} else {
    		fmt.Println(">100")
    	}
    }
    
    //51<=num<=100
    
     for initialisation; condition; post {
    }
    
    // break: 终止for
    func main() {
    	for i := 0; i < 10; i++ {
    		if i > 5 {
    			break
    		}
    		fmt.Println(i)
    	}
    }
    
    //1
    //2
    //3
    //4
    //5
    
    // continue: 跳过本次循环
    func main() {
    	for i := 0; i < 10; i++ {
    		if i %2==0 {
    			continue
    		}
    		fmt.Println(i)
    	}
    }
    
    //1
    //3
    //5
    //7
    //9
    

    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
    
  • 相关阅读:
    day4笔记
    day3笔记
    day2 python基础 while 循环补充
    day1笔记 初识python,paython基础
    指针-1
    scanf输入与getchar的比较
    [递归]母牛的故事
    安装mysql以及遇到的问题解决
    33.指针
    32.字符串
  • 原文地址:https://www.cnblogs.com/iiiiiher/p/12255154.html
Copyright © 2011-2022 走看看