Go語言的func type(函示型別)的轉換方式如下。
func type的轉換與一般型別的轉換方式相同為T(v)
,T
為v
要轉成的型別。
例如下面把add()
轉為AddFunc
型別,所以變數af
為AddFunc
型別。
main.go
package main
type AddFunc func(x, y int) int
func add (x, y int) int {
return x + y
}
func main() {
af := AddFunc(add)
...
}
或是把匿名函示轉為AddFunc
型別變數af
。
main.go
package main
type AddFunc func(x, y int) int
func main() {
af := AddFunc(func (x, y int) int {
return x + y
})
...
}
注意下面的add
仍只是一般的函示變數而非AddFunc
型別,必須用AddFunc(add)
轉換(變數af
);或是直接賦值給AddFunc
型別變數af2
。
main.go
package main
type AddFunc func(x, y int) int
func main() {
add := func (x, y int) int {
return x + y
}
af := AddFunc(add)
var af2 AddFunc = add
...
}
你可能會覺得函式能直接宣告就好幹嘛還定義一個func type?這是因為func type通常是用在可以讓客戶端自行定義方法的實作。
沒有留言:
張貼留言