初识golang之流程控制

if:
使用的语法如:
if x > 10 {
    fmt.Println("x大于10")
} else {
    fmt.Println("x小于10")
}
条件判断语句中不须要括号。与其余语言不一样的就是条件判断语句里容许声明一个变量,这个变量的做用域在该条件逻辑块内有效,其余地方不起做用,如:
if x := randVal(); x > 10 {
    fmt.Println("x大于10")
} else {
    fmt.Println("x小于10")
}

switch:
语法:switch 表达式 {
    case 表达式1:
        程序操做语句
    case 表达式2:
        程序操做语句
}
go中的switch很是的强大,case的值没必要是标量,而能够是一个表达式的执行结果,只要表达式的结果类型和条件的类型同样就能够了,能够把多个值集合在一个case里面,只要条件表达式的值符号此case中的其中一个值就能够执行case里面的语句,同时case默认带有break,匹配成功就不会执行下面的判断语句了,若是要继续判断接下来的case,能够在case里面增长fallthrough来强制执行后面的case代码。若是switch没有表达式,它会匹配true。如;
i := 10
switch i {
    case 2-1:
        fmt.Println("i的值为2-1")
    case 2,3,4,5:
        fmt.Println("i的值在2到5之间")
        fallthrough
    case 10:
        fmt.Println("i的值等于10")
    default:
        fmt.Printf("i的值为:%d\n", i);
}

for:
更其余语言同样用来循环读取数据,但他更强大,go中没有while,do while等语句,都是经过for语句来实现的。
使用:for 表达式1; 表达式2; 表达式3 {
    执行的程序语句
}
for 判断语句一样没有括号括起来,和其余语言同样表达式1在循环开始以前调用,表达式3在每轮循环结束之时调用,表单式2用来进行每次循环的判断。在go中表达式1和表达式3能够省略,来当while功能如:
sum := 1
for sum < 100 {
    sum += sum
}

for range这个语句至关的好用相似于foreach或for in语句。用for range能够来读取字符串,数组,slice,map,channel的数据,如:
for k, v := range map{
    fmt.Println("map's key:", k)
    fmt.Println("map's value:", v)
}
若是不须要相关的值,可使用"_",来丢弃相关的返回值。如:
for _, v := range arr {
    .....
}
注意:迭代右表达式在循环开始前,一次性的计算好,迭代的变量遵循变量类型的赋值原则,若是是指针指向类型,则在迭代的过程当中,若是有修改相关值,会影响到相关的迭代过程,若是是值拷贝的,在迭代过程当中对原变量进行更改,不会影响对循环前变量值的迭代过程。

break|continue|goto:
和其余语言同样经过break来跳出循环,continue来跳过本次循环,break和continue还能够跟着标号,来跳到多重循环中的外出循环。break也能够配合标签来使用,以跳出到指定的标签位置。goto也和标签配合使用来使程序跳转到指定的标签位置,标签重新的一行开始,而且与冒号结束,标签名大小写敏感。
相关文章
相关标签/搜索