在一个包中,我有这个:
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)
我怎么能克服这个?这些函数类型定义具有完全相同签名的函数。
答案 0 :(得分:3)
通常的类型转换适用于函数类型,并且它们适用于非函数类型:
pkg1.PkgApiCall(SomeFuncType(x))