功能,结构中的成员

时间:2019-02-02 15:20:08

标签: function go struct field

我试图让功能作为一个成员在我的结构

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.

我无法弄清楚为什么出现此错误。

1 个答案:

答案 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}
}