GO語言學習筆記(三)流控制 函式

2021-10-23 05:24:49 字數 3457 閱讀 8566

golang精簡了控制語句,但足夠我們使用。

if...else 語句需要注意一點的是對初始化語句的支援。

if x := xtest(); x == 0
switch...case語句同樣對初始化語句支援,此外不能出現重複的cacs值,單個case支援多條件匹配。

switch可以省略條件表示式,預設為true。

package main

import "fmt"

func xtest(x int)

}func main()

需要注意的是switch的條件表示式如果未false時,case匹配規則剛好相反,為不滿足case的條件表示式時匹配。

package main

import "fmt"

func xtest(x int)

}func main()

switch..case語句無需顯示執行break語句,case執行完畢後自動跳出,如果需要繼續執行下乙個的case,可使用fallthrough,但不再匹配後續case條件表示式。fallthrough必須放在case塊結尾.。

package main

import "fmt"

func xtest(x int)

}func main()

golang中迴圈語句只有for一種,但是for的條件表示式有多種形式。

golang函式使用func定義函式,需要注意幾點特性

1)函式無需前置宣告

2)函式不支援巢狀定義

3)函式不支援過載

4)函式支援不定引數

5)函式支援多返回值

6)函式支援命名返回值

7)函式支援匿名函式和閉包

函式定義包括函式名、引數列表、返回值列表(可省略)和函式體。

func name(parameter list)(rusult list)
函式在golang中作為第一物件,可以作為引數、返回值、變數。相同返回值列表和引數列表的函式被認作一種資料型別。

package main

import "fmt"

type priint func(int) int

func a(x int) int

func b(x int) int

func test(x priint) priint

func main()

package main

import "fmt"

func test(x, y int, a ...string)

func main()

golang函式支援多返回值,並且函式支援命名返回值,即返回值變數作為區域性變數使用方式和引數一致。

package main

import "fmt"

func test1() (int, int, int)

func test2() (x int, y string)

func main()

golang函式支援匿名函式,與正常函式相比,減去了函式名稱。匿名函式常用在函式內部巢狀上,匿名函式可以賦值給變數,或者作為引數、返回值。

package main

import "fmt"

func test(a func(int)) func(string)

}func main() () //宣告匿名函式並直接呼叫

a := func() //宣告匿名函式並賦值給變數

golang函式支援閉包特性,閉包指的是函式在使用中引用了函式上下文的環境。閉包會使上下文環境宣告週期變長,如果上下文中定義了區域性變數,該變數將被分配到堆中。

package main

import "fmt"

func test() func()

}func main()

golang函式支援延時呼叫,當函式執行流程結束後,開始執行延時呼叫函式。使用defer可以向當前函式註冊演示呼叫函式,當函式註冊了多個延時呼叫函式,其執行順尋是後註冊的先執行。

package main

import "fmt"

func test() int ()

defer func() ()

return x // 執行完後開始執行延時呼叫

golang函式使用painc和recover實現類似try...catch的結構化異常捕捉。painc會立即終止當前函式流程,並執行當前函式延遲呼叫函式。

在延時呼叫函式中使用recover捕捉painc提交的錯誤物件。需要注意的是golang程式異常時,使用painc代表著程式終止。

package main

import (

"fmt"

"log"

)func main()

}()panic("this is painc") // 終止函式流程

fmt.println("main") // 不會執行

}

GO語言學習三(流程控制語句)

一 for迴圈 go 只有一種迴圈結構 for迴圈 for迴圈包含三個由分號分開的組成部分 初始化語句 第一次迴圈執行前被執行 可選 迴圈條件表示式 每次迭代開始前被求值 false or true 必須 後置語句 每次迭代後執行 可選 樣例一 常用迴圈 package main import fm...

go語言(三)流程控制,函式

一 if語句 if 語句沒有圓括號,而必需要有花括號跟條件和 else在同一行 例 if myvar 1 else if的條件中可以新增一句初始化語句,用 分隔 if c 1 myvar 1 此變數c的作用域是在後面的 內的。外面是不可見,同時如果不在後面使用也是會編譯錯誤的。二 switch語句 ...

Go語言學習筆記 三 控制結構 內建函式

日期 2014年7月21日 一 控制結構 1 go中,只有幾個控制結構,它沒有do或者while迴圈,有for,靈活的switch語句和if,在switch中可以接受像for那樣可選的初始化語句,另外go中還提供了型別選擇和多路通訊轉接器的select。go的控制結構的語法和c相比有所不同,它不需要...