猿问

作为结构成员的函数

我正在尝试使功能成为我的结构中的成员


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.

我无法弄清楚为什么会收到此错误。


杨魅力
浏览 99回答 1
1回答

慕田峪4524236

您的代码的问题是结构中的声明和testFunc. interface{}接受并返回的函数与interface{}接受并返回的函数的类型不同bool,因此初始化失败。您粘贴的编译器错误消息就在此处。这将起作用:package maintype 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}}
随时随地看视频慕课网APP

相关分类

Go
我要回答