zoukankan      html  css  js  c++  java
  • 流程控制

     go的循环中,可以使用return。结束当前循环的执行

    package main
    import "fmt"
    
    func main() {
    
        fmt.Println("11111")
        fmt.Println("22222")
        fmt.Println("33333")
        return
        fmt.Println("44444")
        fmt.Println("55555")
        fmt.Println("66666")
         
    }
    return

    #### if #####

    分支控制:

    package main
    
    import "fmt"
    
    func main() {
        var age int
        fmt.Println("请输入年龄:")
        fmt.Scanln(&age)
    
        if age > 18 {
            fmt.Println("年龄大于18岁")
        }
    }
    单分支
    package main
    
    import "fmt"
    
    func main() {
        var age int
        fmt.Println("请输入年龄:")
        fmt.Scanln(&age)
    
        if age > 18 {
            fmt.Println("年龄大于18岁")
        } else {
            fmt.Println("年龄小于18岁")
        }
    }
    双分支
    package main
    
    import "fmt"
    
    func main() {
        var age int
        fmt.Println("请输入年龄:")
        fmt.Scanln(&age)
    
        if age > 60 {
            fmt.Println("年龄大于60岁")
        } else if age < 60 && age > 30 {
            fmt.Println("年龄30-60岁之间")
        } else {
            fmt.Println("年龄小于30岁")
        }
    }
    多分支
    在一个分支中,嵌套另一个分支
    if 条件表达式 {
        if 条件表达式 {
            XXX
        } else {
            XXX
        }
    }
    嵌套分支

    #### switch #####

    package main
    
    import "fmt"
    
    func main() {
        var name string
        fmt.Println("请输入名字:")
        fmt.Scanln(&name)
    
        switch name {
            case "jack":
                fmt.Println("我是jack")
            case "tom":
                fmt.Println("我是tom")
            default:
                fmt.Println("输入不对")
        }
    
    }
    switch分支

     switch / case后,可以是常量,变量,一个有返回值的函数

     switch / case后,各个表达式的数据类型必须一致

    case后,可以带多个表达式,使用逗号分隔

    case后的表达式如果是常量,则要求不能重复

    case后不需要带break,当程序匹配成功后,会执行对应的代码,之后退出switch,如果匹配不到,执行default

    default,不是必须有的

    package main
    
    import "fmt"
    
    func main() {
        var score int = 90
        switch {
            case score > 90:
                fmt.Println("成绩优秀")
            case 70 <= score && score <= 90 :
                fmt.Println("成绩优良")
            case 60 <= score && score <= 70 :
                fmt.Println("成绩及格")
        }
    
    }
    switch后也可以不带表达式,类似 if -- else 分支来使用。
    package main
    
    import "fmt"
    
    func main() {
        switch score := 90; {
            case score > 90:
                fmt.Println("成绩优秀")
            case 70 <= score && score <= 90 :
                fmt.Println("成绩优良")
            case 60 <= score && score <= 70 :
                fmt.Println("成绩及格")
        }
    
    }
    switch后也可以直接定义一个变量,分号结束。不推荐使用。
    package main
    
    import "fmt"
    
    func main() {
        var num int = 10
    
        switch num {
            case 10:
                fmt.Println("11111")
                fallthrough
            case 20:
                fmt.Println("22222")
                fallthrough
            case 30:
                fmt.Println("33333")
            case 40:
                fmt.Println("44444")
        }
    
    }
    switch穿透,fallthrough
    // 判断某个interface变量中实际指向的变量类型
    package main
    import "fmt"
    
    func main() {
        var x interface{}
        var y = 10.0
        x = y
    
        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("未知型")
        }
    }
    type switch

     #### for #####

    package main
    import "fmt"
    
    func main() {
    
        for i := 1;i <= 10;i++ {
            fmt.Println("你好i",i)
        }
        
        j := 1
        for j <= 10 {
            fmt.Println("你好j",j)
            j++
        }
    
        k := 1
        for {
            if k <= 10 {
                fmt.Println("你好k",k)
            } else {
                break
            }
            k++
        }
    
    }
    三种方式
    // for 循环有中文的字符串
    package main
    import "fmt" func main() { var str string = "abcdefg你好" str2 := []rune(str) for i := 0;i< len(str2);i++ { fmt.Printf("%c ",str2[i]) } }
    package main
    import "fmt"
    
    func main() {
    
        lable2:
        for i := 0;i<5;i++ {
            for j:=0;j<5;j++ {
                if j == 2 {
                    break lable2
                    // break
                }
                fmt.Println("j=",j)
            }
        }
    }
    
    // break时,依据标签,终止 最外层for 循环的执行
    break可以指定终止哪一层的语句
    package main
    import "fmt"
    
    func main() {
    
        lable2:
        for i := 0;i<5;i++ {
            for j:=0;j<5;j++ {
                if j == 2 {
                    continue lable2
                    // continue
                }
                fmt.Println("j=",j)
            }
        }
    }
    
    // continue时,跳转到 最外层for 循环处执行
    continue,如上break

      指定跳转到某一行,不推荐使用

    package main
    import "fmt"
    
    func main() {
    
        fmt.Println("11111")
        fmt.Println("22222")
        goto label1
        fmt.Println("33333")
        fmt.Println("44444")
        label1:
        fmt.Println("55555")
        fmt.Println("66666")
    
    }
    goto
  • 相关阅读:
    收藏题(小试牛刀)
    博客园及相关学习地址收录
    迭代器和生成器
    字典访问的三种方法
    函数进阶(装饰器)
    函数进阶(闭包)
    wx小程序知识点(六)
    wx小程序知识点(五)
    wx小程序知识点(四)
    wx小程序知识点(三)
  • 原文地址:https://www.cnblogs.com/yizhixiaowenzi/p/14568792.html
Copyright © 2011-2022 走看看