美文网首页
09 Go循环结构和四大跳转

09 Go循环结构和四大跳转

作者: 亨锅锅 | 来源:发表于2018-09-19 23:24 被阅读0次

    一、循环结构

    package main
    
    import "fmt"
    
    func main() {
        /*
        1.在C语言中循环结构有三个 for/while/dowhile
        2.在Go语言中循环结构只有一个 for
        因为while/dowhile能做的for都能做, 所以Go只保留了for循环
    
        3.C语言for循环的格式
        for(初始化表达式;条件表达式;增量表达式){
            需要循环操作的语句;
        }
    
        4.Go语言的for循环和C语言非常非常非常像
        for 初始化表达式;条件表达式;增量表达式{
            需要循环操作的语句;
        }
    
        特点:
        1.没有非零即真的概念, 条件表达式的返回值必须是布尔类型
        2.不能省略大括号
        3.最简单的死循环
        for{}
         */
         //fmt.Println("发射子弹")
         //fmt.Println("发射子弹")
         //fmt.Println("发射子弹")
         //fmt.Println("发射子弹")
         //fmt.Println("发射子弹")
    
         for num := 0; num < 5; num++{
             fmt.Println("发射子弹")
         }
    }
    

    二、break

    package main
    
    import "fmt"
    
    func main() {
        /*
        1.在C语言中有四大跳转语句 break continue goto return
        2.在Go语言中也有四大跳转语句  break continue goto return
    
        3.在C语言中break的应用范围
        switch语句和循环语句
        4.在Go语言中一样
        switch语句和循环语句
        但是Go语言的switch语句中默认就不会穿透, 所以break写不写都行, 一般都不写
    
        5.注意点:
        Go语言中的break可以跳转到指定的标签, 但是标签只能定义在前面, 并且跳转到标签之后循环不会被再次执行
        标签和循环之间不能编写其它语句
         */
    
        //switch num := 2; num {
        //case 1:
        //  fmt.Println("1")
        //case 2:
        //  fmt.Println("2")
        //  break
        //default:
        //  fmt.Println("OTHER")
        //}
    
        //for num := 1; num <= 10; num++ {
        //  fmt.Println(num)
        //  if num == 5{
        //      break
        //  }
        //}
    
    msh:
        //fmt.Println("start") // 标签和循环之间不能添加任何语句
        for num := 1; num <= 10; num++ {
            fmt.Println(num)
            if num == 5{
                break msh
            }
        }
    //msh: // 标签只能写在前面
        fmt.Println("end")
    }
    

    三、continue

    package main
    
    import "fmt"
    
    func main() {
        /*
            1.在C语言中continue只能用于循环结构
            2.在Go语言中和C语言一样, 也只能用于循环结构
    
            3.使用的各种特性和C语言都一样, 唯一不一样的就是可以跳转到指定的标签
    
            注意点:
            如果跳转到指定的标签, 对于单层循环来说没有任何意义, 和不指定标签的效果一样
            如果跳转到指定的标签, 对于多层循环来说才有意义, 结束当前内循环, 跳到下一次外循环
            其它的注意点和break跳转到标签一样
            标签只能定义在前面, 标签和循环之间不能添加其它语句
        */
    
        //for num := 1; num <= 10; num++ {
        //  if (num % 2) == 0{
        //      continue
        //  }
        //  fmt.Println(num)
        //}
    
        //msh:
        //  for num := 1; num <= 10; num++ {
        //      if (num % 2) == 0{
        //          continue msh
        //      }
        //      fmt.Println(num)
        //  }
    
    msh:
        for i := 1; i <= 5; i++ {
            fmt.Println(i)
            for j := 1; j <= 10; j++ {
                if (j % 2) == 0 {
                    continue msh
                }
                fmt.Println("---------", j)
            }
        }
    }
    
    

    四、goto

    package main
    
    import "fmt"
    
    func main() {
        /*
            1.C语言中的goto可以在同一个函数中随便乱跳
            2.Go语言中的goto也可以在同一个函数中随便乱跳
            所以就是一模一样
    
            注意点:
            可以往前跳, 也可以往后跳
            标签和跳转语句之间可以编写其它的代码
        */
    
        //  num := 1
        //outer:
        //  fmt.Println("start")
        //  if(num <= 10){
        //      fmt.Println(num)
        //      num++
        //      goto outer // 死循环
        //  }
        //  fmt.Println("come here")
    
        for i := 1; i <= 10; i++ {
            fmt.Println(i)
            if i == 5 {
                goto msh
            }
        }
    msh:
        fmt.Println("come here")
    }
    
    
    

    相关文章

      网友评论

          本文标题:09 Go循环结构和四大跳转

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