如何使用相同的签名转换函数类型?
问题描述:
在一个包,我有这样的:如何使用相同的签名转换函数类型?
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)
我怎么能克服这个?这些函数类型使用完全相同的签名来定义函数。
答
通常的类型转换为函数类型一样好,因为他们的工作对非函数类型:
pkg1.PkgApiCall(SomeFuncType(x))