funcにfunc追加

type BaseFunc func(string)

func (f BaseFunc) sayHello(s string) {
    f(s) // sayHelloメソッドの中でレシーバーのbasefuncのメソッドも実行
    log.Printf("sayHelloFunc: %s", s)
}

func main() {
    f := BaseFunc(func(s string) { log.Printf("basefunc: %s", s) }) // BaseFunc初期化
    f.sayHello("test!")
}

結果

f.sayHello(“test!”) を実行すると、sayHelloメソッドが、親のbasefuncも実行する形になる。

basefunc: test!
sayHelloFunc: test!