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)
            }
        }
    }
}
复制代码

 



本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/8067789.html,如需转载请自行联系原作者
相关文章
|
1月前
|
Go
go语言标签化的 break
go语言标签化的 break
30 2
|
1月前
|
Go
go语言中的continue 语句
go语言中的continue 语句
30 3
|
4月前
|
Go
Go 重构:尽量避免使用 else、break 和 continue
Go 重构:尽量避免使用 else、break 和 continue
|
6月前
|
Go 数据库
Go语言之GORM框架(四)——预加载,关联标签与多态关联,自定义数据类型与事务(完结篇)
Go语言之GORM框架(四)——预加载,关联标签与多态关联,自定义数据类型与事务(完结篇)
|
7月前
|
程序员 Go 开发者
Go语言中的跳转控制结构:`goto`、`break` 和 `continue`
【2月更文挑战第3天】在Go语言中,跳转控制结构允许程序员直接控制程序的执行流程,通过`goto`、`break`和`continue`关键字实现代码的跳转、退出循环或跳过循环的某次迭代。本文将深入探讨这些跳转控制结构的使用场景、注意事项以及最佳实践,帮助读者更好地理解和应用Go语言中的跳转控制结构。
|
Go
这些套路,教你灵活运用Go语言continue语句
这些套路,教你灵活运用Go语言continue语句
98 0
|
Java Go C++
三分钟学 Go 语言——循环语句的多种形式、死循环、break/continue
三分钟学 Go 语言——循环语句的多种形式、死循环、break/continue
三分钟学 Go 语言——循环语句的多种形式、死循环、break/continue
|
Go C++
Go-分支和循环总结(if、else、switch、for、range、continue、break等)
Go-分支和循环总结(if、else、switch、for、range、continue、break等)
122 0
Go-分支和循环总结(if、else、switch、for、range、continue、break等)
|
Go 索引
Go基础:range、循环控制Goto、Break、Continue
Go基础:range、循环控制Goto、Break、Continue
289 0