Go 中的原型结构

我的用例是,我需要在 Go 中有几个结构,它们将拥有相同签名的方法,而不必拥有所有方法。以下代码描述了要求,也代表了我当前的解决方案。


type calc struct {

    fn func(a, b int) int

    gn func(a string) bool

    name string

}


func add(a, b int) int {

    return a + b

}


func bar(foo string) bool {

    // do something

}


func sub(a, b int) int {

    return a - b

}


func main() {

    for c := range []calc{{

        fn: add,

        gn: bar,

        name: "addition",

    }, {

        fn: sub,

        name: "subtraction",

    }} {

        fmt.Printf("%s(10, 15) returned: %d\n", c.name, c.fn(10, 15))

        if c.gn != nil {

            c.gn(c.name)

        }

    }

}

我的问题是如何改进这段代码?在 Go 中实现这一目标的最佳方法是什么?我可以使用接口实现更好的解决方案吗?


MMTTMM
浏览 260回答 2
2回答

莫回无

我已经亲自与一些人讨论过,显然我的解决方案是正确的。虽然它可以使用接口重写,但这不一定是改进。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go