码迷,mamicode.com
首页 > 其他好文 > 详细

go4--break,continue + 标签

时间:2017-12-20 03:50:39      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:外部   级别   递增   nbsp   版本   through   --   body   pos   

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)
            }
        }
    }
}

 

go4--break,continue + 标签

标签:外部   级别   递增   nbsp   版本   through   --   body   pos   

原文地址:http://www.cnblogs.com/yaowen/p/8067789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!