Go

Go语言学习笔记(四)-控制语句

2017-03-21  本文已影响11人  EvansChang

循环结构

Go中只存在一种循环结构-for循环。基本的for循环由三部分组成:

package main
import "fmt"
func main(){
    for{//无线循环
        fmt.Println("Hello World");
    }
}

if

Go的if语句与for相似,不需要括号,但是必须存在大括号。与其他语言中的if语句不通的是Go中的if可以在表达式之前执行一个简单的语句,而该语句中声明的变量只能在if之中,可以参考如下代码:

package main
import(
    "fmt"
    "math"
)
func pow(x,y,max float64) float64{
    if v := math.Pow(x,y); v<max{
        return v
    }else{
        fmt.Println("%g >= %g",v,max)
    }
    return max
}
func main(){
    fmt.Println(
        pow(3,2,10),
        pow(3,3,20),
    )
}

从上述代码中我们可以看出,if语句表达式之前的简单语句需要以分号与条件语句隔开。

switch

同理switch语句与其他语句的差别也是在条件一句前可以存在简单语句且以分好隔开,不需要小括号而是必须存在大括号。特别需要说明的是which语句只有当以fallthrough语句结束时才能继续执行下一个case否则将直接结束分支。switch语句页可以不存在条件语句,此时等同于if-then-else结构。代码如下:

package main
import (
    "fmt"
    "time"
)
func main(){
    t := time.Now()
    switch{
        case t.Hour() <12 :
            fmt.Println("Good Morning")
        case t.Hour() <17 :
            fmt.Println("Good Afternoon")
            fallthrough
        default:
            fmt.Println("Good Evening")
    }
}

我写代码的时候是下午15点,因此执行之后会输出”Good Afternoon”与”Good Evning”两条语句。

defer

defer语句会将函数推迟到外层函数返回之后执行。推迟调用的函数其参数会立即求值,但直到外层函数返回前该函数都不会被调用。推迟的函数调用会被压入一个栈中。当外层函数返回时,被推迟的函数会按照后进先出的顺序调用。

上一篇 下一篇

猜你喜欢

热点阅读