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相比有所不同,它不需要...