我的用例是,我需要在 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
莫回无
随时随地看视频慕课网APP
相关分类