第3课 Go控制,循环,选择,跳转语句

lhdalhd1996 · · 2264 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

package main

import (
    "fmt"
)

func main() {
    /*
        Go虽然保留了指针,但是其与其他编程语言不同的是,在Go中不支持
        指针运算以及“->”运算符,而是直接采用“.”选择符来操作指针目标
        对象的成员

        操作符“&”取变量地址,使用“*”通过指针间接访问目标对象
        默认值nil而非NULL
    */
    a := 1
    var p *int = &a
    fmt.Println(*p) //输出1
    //指针

    /*
        ++和--是作为语句而非表达式
        表达式可以放在=右边
        所以现在a++只能作为单独的一行
    */
    a--
    fmt.Println(*p) //输出0

    if 1 < 2 { //左大括号必须放在if同一行
    } //if的一种用法

    if a := 1; a > 1 { //初始化语句;条件语句
    } //if的另一种用法,注意这个a的作用域只有在if语句块中
    //并且覆盖上面的a,当if执行完后,a变成了外部语句的a

    /*
        循环语句for
        -Go中只有for一个循环语句关键字,但是支持三种形式初
        -始化和步进表达式可以是多个值
        -条件语句每次循环都会被重新检查,因此不建议在条件语
        句中使用函数,尽量提前计算好条件并以变量或常量代替
        -左大括号必须和条件语句在同一行
    */
    fmt.Println("-----")

    aa := 1
    for {
        aa++
        if aa > 3 {
            break
        }
        fmt.Println(aa)
    }
    fmt.Println("over")
    //第一种形式
    fmt.Println("-----")

    for aa <= 3 {
        aa++
        fmt.Println(aa)
    }
    //第二种形式
    fmt.Println("-----")

    for i := 0; i < 3; i++ {
        fmt.Println("第三种")
    }
    //第三种形式(步进表达式)

    /*
        选择语句switch
        -可以使用任何类型或表达式作为条件语句
        -不需要写break
        -如果希望继续执行下一个case,则需要使用fllthrough语句
        -支持一个初始化表达式(可以是并行方式),右侧需跟分号
        -左大括号必须和条件语句在同一行
    */
    fmt.Println("-----")

    b := 1
    switch b {
    case 0:
        fmt.Println("a=0")
    case 1:
        fmt.Println("a=1")
    default:
        fmt.Println("None")
    }
    fmt.Println("-----")

    switch bb := 1; { //这个bb的作用域也是代码块内
    case bb >= 0:
        fmt.Println("bb>=0")
    case bb >= 1:
        fmt.Println("bb>=1")
    default:
        fmt.Println("None")
    }
    fmt.Println("-----")

    /*
        跳转语句goto,break,continue
        -三个语法都可以配合标签使用
        -标签名区分大小写,若创建了标签不使用会出现编译错误
        -break与continue配合标签可用于多层循环的跳出
        -goto是调整执行位置,与其它2个语句配合标签的结果并不相同
    */
LABEL1:
    for {
        for i := 0; i < 10; i++ {
            if i > 3 {
                break LABEL1
            }
        }
    }
    fmt.Println("跳出循环!")
    //使用break LABEL1 会跳出与LABEL1同一级别的循环,注意,与LABEL1同一级别的循环
    //显然如果用goto,会调整执行位置,无限循环下去
    //如果用continue,也会跳出LABEL1一级别的循环,在这里为无限循环,必须做如下调整:
LABEL2:
    for i := 0; i < 10; i++ {
        for {
            continue LABEL2
            fmt.Println(i) //本条语句永远不会执行
        }
    }
    fmt.Println("跳出循环!")
    //如果把contain换成goto,肯定结果还是无限循环!
}

运行结果:
1
0
—–
2
3
over
—–
—–
第三种
第三种
第三种
—–
a=1
—–
bb>=0
—–
跳出循环!
跳出循环!


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:lhdalhd1996

查看原文:第3课 Go控制,循环,选择,跳转语句

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2264 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传