Golang学习笔记(三):控制流

2019-11-10 10:06:07于丽

控制结构分为: 条件+选择+循环

IF

1.说明


条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号
在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用
花括号一定存在,且必须与if/else在同一行

2.语法

//基本
if a > 0 {  //无括号
     dosomething()
} else if a == 0 { //必须用花括号
     doothertings()
} else {
     donothing()
}

//单行模式
if a > 0 { a += 100 } else { a -= 100 }

3.示例

package main

func main(){
    a := 10

    if a > 0 {
        a += 100
    } else if a == 0 {
        a = 0
    } else {
        a -= 100
    }
    println(a)

    b := 101
    if b > 0 { b += 100 } else { b -= 100 }
    println(b)
}

//支持一个初始化语句
if a:=1; a<10 { //允许在条件之前执行一个简单语句,由此语句定义的变量作用域仅在if/else范围内
    return a
}
if a, b := 1,2; a+b == 10 {
}

if x := computedValue(); x > 10 {
} else {
}

4.结果

110
201

注意,在有返回值的函数中,不允许将“最终的”return语句放到if ... else ... 结构中,否则编译失败

func example(x int) int {
    if x == 0 {
        return 5
    } else {
        return x
    }
}

FOR

for是go的"while", 只支持for关键字.有三种形式

1.语法

for init; condition; post {
    //init不支持逗号,只能平行赋值
    //condition每次循环开始都会检查,不建议在里面使用函数,建议用计算好的变量/常量代替
    //post后面必须跟花括号,每轮循环结束的时候调用
}

for i:=0; i<10; i++ {
}

-----------------------------

for condition {
    dosomething()
}

i:=1
for i<10 {