美文网首页
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