Я пытаюсь удерживать функцию, которая будет возвращать новые экземпляры типа, реализующие определенный интерфейс в структуре.Вот урезанный пример:
package main
type Adder interface {
Add(Adder)
Val() int
}
type NewAdder func() Adder
type number int
type NewHolder struct {
newFunc NewAdder
}
func (me *number)Add(it Adder) {
*me += number(it.Val())
}
func (me *number)Val() int {
return int(*me)
}
func newAdder() *number {
return (*number)(new(int))
}
func main() {
var holder NewHolder
holder.newFunc = NewAdder(newAdder)
}
Когда я пытаюсь его скомпилировать, он говорит cannot convert newAdder (type func() *number) to type NewAdder
.Так какой же путь для достижения моей цели?
Вот пример Python того, что я пытаюсь сделать, просто для справки:
class NewStuffMaker(object):
def __init__(self, new):
self.new = new
def make_new():
return []
obj = NewStuffMaker(make_new)
new_lst = obj.new()
В идеале мне бы хотелосьчтобы иметь возможность хранить кучу этих функций (или структур, содержащих функции и некоторые другие данные) в срезе.Разве это неразумно?