兄弟連go教程(11)函式 - 函式定義

尹成發表於2018-07-04
不⽀支援 巢狀 (nested)、過載 (overload) 和 預設引數 (default parameter)。
•⽆無需宣告原型。
•⽀支援不定⻓長變參。
•⽀支援多返回值。
•⽀支援命名返回引數。
•⽀支援匿名函式和閉包。
使⽤用關鍵字 func 定義函式,左⼤大括號依舊不能另起⼀一⾏行。
func test(x, y int, s string) (int, string) { // 型別相同的相鄰引數可合併。
n := x + y // 多返回值必須⽤用括號。
return n, fmt.Sprintf(s, n)
}


函式是第⼀一類物件,可作為引數傳遞。建議將複雜簽名定義為函式型別,以便於閱讀。
func test(fn func() int) int {
return fn()
}
type FormatFunc func(s string, x, y int) string // 定義函式型別。
func format(fn FormatFunc, s string, x, y int) string {
return fn(s, x, y)
}
func main() {
s1 := test(func() int { return 100 }) // 直接將匿名函式當引數。
s2 := format(func(s string, x, y int) string {
return fmt.Sprintf(s, x, y)
}, "%d, %d", 10, 20)
println(s1, s2)
}



有返回值的函式,必須有明確的終⽌止語句,否則會引發編譯錯誤。


尹成老師

QQ77025077 

微信18510341407

所有視訊在尹成學院

www.yinchengxueyuan.com

尹成百度雲請聯絡QQ475318423




相關文章