Мой вариант использования: мне нужно иметь несколько структур в Go, у кого будут методы с теми же сигнатурами и необязательно должны иметь все методы. Следующий код описывает требования, а также представляет мое текущее решение.Prototyping struct в 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? Могу ли я получить лучшее решение с использованием интерфейса?
Что такое 'c.foo' и откуда берется' gn' (функция, а не метод)? –
@ Ainar-G Ах, извините, обновлено – Fallen