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

循环结构

Go中只存在一种循环结构-for循环。基本的for循环由三部分组成:
* 初始化语句:第一次迭代前执行
* 条件表达式:每次迭代前执行
* 后置语句:每次迭代后执行
Go的for循环语句后面不需要小括号包裹,但是必须存在大括号。此外,初始化语句与后置语句可以省略,因为Go中的for等价于C中的while,一次当我们写无限循环时可以忽略条件表达式,将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语句会将函数推迟到外层函数返回之后执行。推迟调用的函数其参数会立即求值,但直到外层函数返回前该函数都不会被调用。推迟的函数调用会被压入一个栈中。当外层函数返回时,被推迟的函数会按照后进先出的顺序调用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值