zoukankan      html  css  js  c++  java
  • go4--break,continue + 标签

    package main
    
    /*
    指针
    Go虽然保留了指针,但与其它编程语言不同的是,在Go当中不
    支持指针运算以及”->”运算符,而直接采用”.”选择符来操作指针
    目标对象的成员
    
    操作符”&”取变量地址,使用”*”通过指针间接访问目标对象
    默认值为 nil 而非 NULL
    递增递减语句
    在Go当中,++ 与 -- 是作为语句而并不是作为表达式
    
    */
    import (
        "fmt"
    )
    
    func main() {
        a := 1
        var p *int = &a
        fmt.Println(p)  //0xc0420120b8
        fmt.Println(*p) //1
    
        b := a++   //++只能是语句,不能是表达式, unexpected ++ at end of statement
        fmt.Println(b) //1
    
        /*
           条件表达式没有括号
           支持一个初始化表达式(可以是并行方式)
           左大括号必须和条件语句或else在同一行
           支持单行模式
           初始化语句中的变量为block级别,同时隐藏外部同名变量
           1.0.3版本中的编译器BUG
    
        */
        a1 := 10
        if a1 := 1; a1 < 2 { //a在if和else里面的局部变量,覆盖外部在a,if走完后用全局的a
            fmt.Println(a1)
        } else {
            fmt.Println(a1)
        }
        fmt.Println(a1)
    
        if a, b, c = 1, 2, 3; a+b+c > 6 {
    
        } else {
    
        }
    
        for {
            a++
            if a > 3 {
                break
            }
        }
    
        for a < 3 {
            a++
        }
    
        for i := 0; i < 3; i++ {
            a++
        }
    
        /*
            选择语句switch
            可以使用任何类型或表达式作为条件语句
            不需要写break,一旦条件符合自动终止
            如希望继续执行下一个case,需使用fallthrough语句
            支持一个初始化表达式(可以是并行方式),右侧需跟分号
            左大括号必须和条件语句在同一行
        */
    
        a := 1
        switch a { //switch a := 1;{  a是局部变量
        case 0:
            fmt.Println("0") //不用写break
        case 1:
            fmt.Println("1")
        case a >= 1:
            fmt.Println("1")
            fallthrough //继续执行下一个case
        default:
            fmt.Println("default")
    
        }
    
        /*
            跳转语句goto, break, continue
            三个语法都可以配合标签使用
            标签名区分大小写,若不使用会造成编译错误
            Break与continue配合标签可用于多层循环的跳出
            Goto是调整执行位置,与其它2个语句配合标签的结果并不相同
        */
    
    LABEL1:
        for {
            for i := 0; i < 10; i++ {
                if i > 3 {
                    break LABEL1 //不使用LABEL则break只是跳出上一层的for循环,
                    //使用break + 标签则跳出与标签同级的for循环(使用标签可以指定跳出哪成for循环),
                    //这里是最外层的for循环//与标签平级的for循环不再执行,
                    //如果改成goto LABEL1则又会去从LABEL1开始执行,应该goto到最外层for循环结束处
                } else {
                    fmt.Println(i)
                }
            }
        }
    
    LABEL2:
        for {
            for i := 0; i < 10; i++ {
                if i > 3 {
                    continue        //结束本次循环
                    continue LABEL2 //continue + 标签:跳到与标签平级的for循环的下一次循环,而不是
                    //本层循环(指定跳到哪个for循环的下一层)
                } else {
                    fmt.Println(i)
                }
            }
        }
    }
  • 相关阅读:
    React Native 开发豆瓣评分(三)集成 Redux
    React Native 开发豆瓣评分(二)路由配置
    React Native 开发豆瓣评分(一)环境搭建&配置模拟器
    VSCode 搭建 React Native 环境
    webpack4 + ejs 构建多页应用
    react-native 沉浸式状态栏
    react-native——tab配置及跳转
    uni-app 入门之 nvue (weex) 爬坑记
    javascript中bind()、call()、apply()的使用
    mysql数据库中文乱码配置文件解决以及常见mysql命令
  • 原文地址:https://www.cnblogs.com/yaowen/p/8067789.html
Copyright © 2011-2022 走看看