美文网首页Go
Go语言学习笔记(四)-控制语句

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

作者: EvansChang | 来源:发表于2017-03-21 17:41 被阅读11次

循环结构

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

相关文章

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

    循环结构 Go中只存在一种循环结构-for循环。基本的for循环由三部分组成: 初始化语句:第一次迭代前执行 条件...

  • Go编程基础(控制流程语句)

    现在来学习下go语言中控制流程语句,区别下其他语言不同的写法。 1.for循环 Go只有for一个循环语句关键字,...

  • go语言流程和函数(五)

    流程控制 if语句 go语言的if语句不需要括号,go语言的if还可以在条件判断的地方声明变量,go语言中的got...

  • 笨办法学golang(四)

    这是Go语言学习笔记的第四篇 Go语言学习笔记参考书籍「Go语言圣经」以及Go官方标准库 数组 数组是指一系列同类...

  • go 语言-- 控制语句

    1 循环语句 循环语句是一条表达式需要执行多次。Go 只有一种循环语句for循环, for循环语句不需要使用() ...

  • Go语言控制语句

    1 .条件语句:if,if……else,嵌套if,else if 2.选择语句swith,select; 3.循环...

  • Go基础笔记

    Go语言基础(一) 流程控制语句:for、if、else、switch、defer for Go只有一种循环结构:...

  • 笨办法学golang(三)

    这是Go语言学习笔记第三篇。 Go语言学习笔记参考书籍「Go语言圣经」以及Go官方标准库 Go语言基本类型主要有布...

  • 理解 defer、panic 和 recover

    在 Go 语言中,有很多流程控制的语句,if、else 等等,这些流程控制的关键字在其他语言中也存在的但 Go 中...

  • 笨办法学golang(二)

    这是Go语言学习笔记的第二篇文章。 Go语言学习笔记参考书籍「Go语言编程」、Go官方标准库 前文提要 上篇文章中...

网友评论

    本文标题:Go语言学习笔记(四)-控制语句

    本文链接:https://www.haomeiwen.com/subject/tomgnttx.html