我试图让功能作为一个成员在我的结构
type myStruct struct {
myFun func(interface{}) interface{}
}
func testFunc1(b bool) bool {
//some functionality here
//returns a boolean at the end
}
func testFunc2(s string) int {
//some functionality like measuring the string length
// returns an integer indicating the length
}
func main() {
fr := myStruct{testFunc1}
gr := myStruct{testFunc2}
}
我遇到了错误:
Cannot use testFunc (type func(b bool) bool) as type func(interface{}) interface{}
Inspection info: Reports composite literals with incompatible types and values.
我无法弄清楚为什么出现此错误。
答案 0 :(得分:3)
您的代码的问题是在结构中的声明和之间的不兼容的类型testFunc
。函数取interface{}
,并返回interface{}
不具有相同类型的一个函数取和返回bool
,所以初始化失败。您粘贴的编译器错误消息是正确的点这里。
这将起作用:
package main
type myStruct struct {
myFun func(bool) bool
}
func testFunc(b bool) bool {
//some functionality here
//returns a boolean at the end
return true
}
func main() {
fr := myStruct{testFunc}
}