網頁

2021/9/7

Golang 函式型別的轉換 function type conversion

Go語言的func type(函示型別)的轉換方式如下。


func type的轉換與一般型別的轉換方式相同為T(v)Tv要轉成的型別。

例如下面把add()轉為AddFunc型別,所以變數afAddFunc型別。

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通常是用在可以讓客戶端自行定義方法的實作


沒有留言:

張貼留言