golang学习——第二章Go基础之控制语句

1、常量的初始化规则

2、枚举 iota的用法
在常量组中定义iota后,从0开始,每定义一个常量iota会自动加一,直到const重置为0
常量的代码规则,最好全部大写。大写时有public性质,当想只在包内使用时可以在常量定义前面加c

3、运算符是从左到右
4、语句中可以先初始化,再条件,此时初始化的值只在条件语句中有效,在条件语句外会未定义,
 当条件语句中的变量名称和条件语句上面定义的变量名称相同时,
 
 package main

import (
    . "fmt"
)

// 条件语句写法

func main() {
    if 1 > 0 {
        Println("df")
    }
}

//在条件语句中初始化变量

func main() {
    if a := 2; a > 1 {
        Println("df")
    }
}

// Output:
// df

//当条件语句中的变量跟条件语句上面的变量名称相同时,在条件语句中起作用的是条件语句中的变量。
func main() {
    a := 10
    if a := 2; a > 1 {
        Println(a)
    }
    Println(a)
}

// Output:
// 2
// 10

//当条件语句中的变量跟条件语句上面的变量名称相同时,条件语句中的变量只作用于条件语句中。

func main() {
    if a := 2; a > 1 {
        Println(a)
    }
    Println(a)
}

// Output:
// 程序报错,提示第二个Println(a)中的a undefined ,说明if中的变量a只作用于条件语句。


///     for语句的定义和使用
package main

import (
    . "fmt"
)

// for 循环语句写法 ,循环语句只有for,没有while,但是for的写法可以完全替代其他循环语句的功能
// for 循环有3种写法
//第一种,for 实现while功能的写法

func main() {
    a := 1
    for {
        a++
        if a > 10 {
            break
        }
        Println(a)
    }
    Println(a, "over")
}

//第二种,for自带一种表达式,当满足条件执行,不满足时跳出,等同于while条件语句

func main() {
    a := 1
    for a < 3 { //TODO:当a<3条件成立时,执行for内部,当条件不成立时,for语句结束
        a++
        Println(a)
    }
    Println(a, "over")
}

//第三种,同c++ for 语句写法

func main() {

    for a := 0; a < 3; a++ {
        Println(a)
    }
    Println("over")
}

package main

import (
    "fmt"
)

//switch 语句的写法

//第一种  常见的写法
func main() {
    a := 1
    switch a {
    case 0:
        Println("a = 0")
    case 1:
        Println("a = 1")
    case 2:
        Println("a = 2")
    default:
        Println("None")
    }
} //Output:
//a = 1

//第二种,不在switch中做条件判断,将条件判断放到case中

func main() {
    a := 2
    switch {
    case a > 1:
        Println("a > 1")
    case a == 2:
        Println("a == 1")
    case a < 1:
        Println("a < 1")
    default:
        Println("None")
    }
} //Output:
//a > 1

//注意的地方,golang中提供fallthrough的用法。怎么用,接着第二种情况讲
//如果case带有fallthrough,程序会继续执行下一条case,不会再判断下一条case的条件,如果之后的case都有fallthrough,default出会被执行。
func main() {
    a := 2
    switch {
    case a > 1: //TODO:条件满足
        fmt.Println("a > 1") //TODO:在满足条件时,执行完动作语句,没有遇到fallthrough,会直接break
        fallthrough
    case a > 2: //TODO:这里条件也满足,但是没有打印出结果,是因为上面已经break。如果想判断多个条件,不想break,可以在相应语句后面加fallthrough
        fmt.Println("a == 1")
    case a < 1:
        fmt.Println("a < 1")
    default:
        fmt.Println("None")
    }
} //Output:
//a > 1


package main

import . "fmt"

//goto  break  continue  用法
//这三个都可以添加标签,来定义程序执行的转折点,不同的是,goto是定义程序执行跳转到标签位置,而break和continue标签定义的是程序循环体的嵌套层级。
//进一步讲,break和continue标签的作用是将当前的程序跳到怎样的层级。

//举例讲解break和continue标签的作用

func main() {
LABEL1: //此处label定义了程序的层级是最外面
    for {
        for a := 0; a < 10; a++ {
            break LABEL1 //TODO:这个break 到指定的label层级上,作用是将程序执行点跳出了所有的嵌套循环,直接跳到了最外层
        }
    }
    Println("OK")
}

//Output: OK

func main() {
LABEL1: //此处label定义了程序的层级是最外面
    for a := 0; a < 10; a++ {
        for {
            Println(a)
            continue LABEL1 //TODO:这里的continue作用到了最外层的循环体,LABEL标记的就是最外层的层级
        }
    }
    Println("OK")
}

//Output: OK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值