美文网首页
五.Go控制语句

五.Go控制语句

作者: kaxi4it | 来源:发表于2017-06-16 01:23 被阅读0次

    if语句

    • 条件语句不需要()
    • 支持一个初始化表达式,如 i:=0
    • 语句中的变量会覆盖外部语句的同名变量
    func main() {
        a := 1
        if a := 0; a < 1 {
            fmt.Println(a)
        }
        fmt.Println(a)
    }
    

    打印结果为:0 1

    for语句

    • go只有for一个循环语句关键字,但有三种形式
    • 初始化和步进表达式可以是多个值
    • 条件语句每次循环都会重新判断,尽量使用变量或常亮判断,避免函数
    func main() {
        a := 0
        for {//for的第一种形式,无限循环,手动break
            a++
            if a > 5 {
                break
            }
            fmt.Println(a)
        }
        fmt.Println("over")
    }
    
    func main() {
        a := 0
        for a < 3 {//for的第二种形式,后面跟着判断语句
            fmt.Println(a)
            a++
        }
        fmt.Println("over")
    }
    
    func main() {
        str := "abc"
        for a, len := 0, len(str); a < len; a++ {//for的第三种形式,并优化了判断语句
            fmt.Println(a)
        }
        fmt.Println("over")
    }
    

    switch语句

    • 可以使用任何类型和表达式作为条件语句
    • 不需要写break,条件符合自动终止
    • 如果希望继续执行下一个case,最后添加fallthrough语句,使用了fallthrough语句后,会跳过case的判断,直接执行下一条的代码内容
    • 支持一个初始化表达式,可以是并行方式,但右侧需要添加分号
    func main() {
        a := 3
        switch {
        case a > 0:
            fmt.Println("a>0")
            fallthrough
        case a > 1:
            fmt.Println("a>1")
        case a > 2:
            fmt.Println("a>2")
        }
    
        switch a {
        case 3:
            fmt.Println("a=" + strconv.Itoa(a))
            fallthrough
        case 1:
            fmt.Println("a=" + strconv.Itoa(a))
            fallthrough
        case 4:
            fmt.Println("a=" + strconv.Itoa(a))
        }
    
        switch b := 1; {
        case b >= 1:
            fmt.Println("b>=1")
            fallthrough
        case b >= 3:
            fmt.Println("b>=3")
        }
    }
    

    goto/break/continue

    • 三个语句都可以配合标签使用
    • 标签名区分大小写
    • break与continue配合标签可用于多层循环的跳出
    • goto是调整执行位置,与其他2个语句配合标签的结果并不相同
    func main() {
    tag1:
        for {
            for i := 0; i < 10; i++ {
                fmt.Println(i)
                if i > 5 {
                    //break 单独的break指跳出当前for循环层级,代码继续死循环
                    break tag1 //-->跳出循环到tag1标签的层级
                }
            }
        }
        fmt.Println("over")
    }
    
    func main() {
        for {
            for i := 0; i < 10; i++ {
                fmt.Println(i)
                if i > 5 {
                    goto tag1 //-->调整执行位置到tag1标签
                }
            }
        }
    tag1:
        fmt.Println("over")
    }
    
    func main() {
    tag1:
        for i := 0; i < 10; i++ {
            fmt.Println(i)
            for {
                continue tag1//跳到上一层的有限循环继续执行
            }
        }
        fmt.Println("over")
    }
    

    直通车

    一.Go开发工具及命令
    二.Go编程基础知识
    三.Go的类型与变量
    四.Go常量与运算符
    五.Go控制语句
    六.Go数组
    七.Go切片slice
    八.Go哈希字典map
    九.Go函数func
    十.Go结构struct

    相关文章

      网友评论

          本文标题:五.Go控制语句

          本文链接:https://www.haomeiwen.com/subject/lcqyqxtx.html