你可以用函式型別作為另乙個函式的返回型別。你需要做的是在返回箭頭(->
)後寫乙個完整的函式型別。
下面的這個例子中定義了兩個簡單函式,分別是stepforward
和stepbackward
。stepforward
函式返回乙個比輸入值大一的值。stepbackward
函式返回乙個比輸入值小一的值。這兩個函式的型別都是(int) -> int
:
func stepforward(input: int) -> int
func stepbackward(input: int) -> int
下面這個叫做choosestepfunction
的函式,它的返回型別是(int) -> int
的函式。choosestepfunction
根據布林值backwards
來返回stepforward
函式或stepbackward
函式:
func choosestepfunction(backwards: bool) ->
(int) -> int
你現在可以用choosestepfunction
來獲得乙個函式,不管是那個方向:
var currentvalue = 3
let movenearertozero = choosestepfunction(currentvalue > 0)
// movenearertozero now refers to the stepbackward() function
上面這個例子中計算出從currentvalue
逐漸接近到0
是需要向正數走還是向負數走。currentvalue
的初始值是3
,這意味著currentvalue > 0
是真的(true
),這將使得choosestepfunction
返回stepbackward
函式。乙個指向返回的函式的引用儲存在了movenearertozero
常量中。
現在,movenearertozero
指向了正確的函式,它可以被用來數到0
:
println("counting to zero:")
// counting to zero:
while currentvalue != 0
println("zero!")
// 3...
// 2...
// 1...
// zero!
Golang 中函式作為值與型別
在 go 語言中,我們可以把函式作為一種變數,用 type 去定義它,那麼這個函式型別就可以作為值傳遞,甚至可以實現方法,這一特性是在太靈活了,有時候我們甚至可以利用這一特性進行型別轉換。作為值傳遞的條件是型別具有相同的引數以及相同的返回值。go 語言的型別轉換基本格式如下 type name ex...
Golang 中函式作為值與型別
在 go 語言中,我們可以把函式作為一種變數,用 type 去定義它,那麼這個函式型別就可以作為值傳遞,甚至可以實現方法,這一特性是在太靈活了,有時候我們甚至可以利用這一特性進行型別轉換。作為值傳遞的條件是型別具有相同的引數以及相同的返回值。go 語言的型別轉換基本格式如下 type name ex...
Go中函式作為值 型別傳遞。
在go中函式也是一種變數,我們可以通過type來定義它,它的型別就是所有擁有相同的引數,相同的返回值的一種型別 type typename func input1 inputtype1 input2 inputtype2 result1 resulttype1 函式作為型別到底有什麼好處呢?那就是可...