2
구조체의 특정 인터페이스를 구현하는 형식의 새 인스턴스를 반환하는 함수를 보유하려고합니다. 다음은 빼기 예제입니다.이동 (Go)에서 팩토리 기능을 유지하는 방법은 무엇입니까?
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
이 표시됩니다. 그럼 내 목표를 달성하는 데 어떻게 가야 할까? 나는 이러한 기능의 무리를 보유 할 수 있도록하고 싶습니다, 이상적으로
class NewStuffMaker(object):
def __init__(self, new):
self.new = new
def make_new():
return []
obj = NewStuffMaker(make_new)
new_lst = obj.new()
을 (또는 구조체는 기능을 포함 : 여기
은 참조를 위해 내가 할 노력하고있어의 파이썬 예제 및 일부 다른 데이터). 그것은 부당한 일입니까? 다른 사람이 문제가있는 경우 미래의 사람들을 위해
는, 키 비트는 함수가 인터페이스를 구현하는 인터페이스를 반환하지 유형으로 선언 된 것입니다. – nmichaels