如何转换具有相同签名的函数类型?

时间:2017-08-26 21:36:42

标签: go

在一个包中,我有这个:

package pkg1

type SomeFuncType func (a interface{}, b interface{}) int

func PkgApiCall (x SomeFuncType) {
   ...
}

在我使用这个软件包的代码中,我有一些非常类似的东西:

type MyFuncType func (a interface{}, b interface{}) int

现在我想调用pkg1.PkgApiCall(),但使用MyFuncType变量作为参数:

package mypackage

func doingSomeThing(x MyFuncType) {
  pkg1.PkgApiCall(x)
}

它无法编译。我收到了错误

./src1.go:97:7: error: incompatible type in initialization (cannot use type mypackage.MyFuncType as type pkg1.SomeFuncType)

我怎么能克服这个?这些函数类型定义具有完全相同签名的函数。

1 个答案:

答案 0 :(得分:3)

通常的类型转换适用于函数类型,并且它们适用于非函数类型:

pkg1.PkgApiCall(SomeFuncType(x))