跳转至

4.循环和分支

4.1 if

go中的if结合了C语言和Python,其基本形式如下:

if <condition> {
    ...
} else if <condition> {
    ...
} else {
    ...
}

即,不需要写括号,但是要用花括号包括。

若要同时判断多个条件或者调整优先级,也可以使用小括号包围。

此外,Go语言中,if语句还有一种写法,简化了代码的同时使逻辑更清晰:

if <statement1>; <condition>{
    statment
}
上述语句先执行语句1,然后判断条件。

4.2 switch

go语言中有和C相似的switch分支。其基本格式如下:

switch <var> {
    case <value1>, <value2>, ..., <valueN>:
        ...
    case ...:
        ...
        fallthrough // 继续执行下一个case
    default:
        ...
}

可以看到,其基本形式与C语言相同,但有一点要注意,对多个相同case,go语言使用逗号并排列写多个值。

Info

在C或者Java语言中,需要在case下写break才能跳出,否则会继续执行下一个case中的语句。但go不同,go默认break,如果需要像C或者Java在执行当前case后,继续执行下一个case,则要使用fallthrough关键字。

4.3 for

在go语言中,for关键词用于实现类似C、Python等的 forwhile

其基本格式如下:

for <condition> {
    if <condition> {
        break // 可以使用break退出for
    }
}

Info

当for的<condition>为空时,相当于while true

<condition>可以写成单个条件,也可以写成C语言的for形式,如:i := 1; i < 10; i++

使用内置函数range可以同时获取可迭代对象的索引和值:

for index value := range iterable {
    ...
}