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通常是用在可以讓客戶端自行定義方法的實作。
沒有留言:
張貼留言