41 lines
617 B
Go
41 lines
617 B
Go
package example
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type GoCallback interface {
|
|
Callback
|
|
deleteCallback()
|
|
IsGoCallback()
|
|
}
|
|
|
|
type goCallback struct {
|
|
Callback
|
|
}
|
|
|
|
func (p *goCallback) deleteCallback() {
|
|
DeleteDirectorCallback(p.Callback)
|
|
}
|
|
|
|
func (p *goCallback) IsGoCallback() {}
|
|
|
|
type overwrittenMethodsOnCallback struct {
|
|
p Callback
|
|
}
|
|
|
|
func NewGoCallback() GoCallback {
|
|
om := &overwrittenMethodsOnCallback{}
|
|
p := NewDirectorCallback(om)
|
|
om.p = p
|
|
|
|
return &goCallback{Callback: p}
|
|
}
|
|
|
|
func DeleteGoCallback(p GoCallback) {
|
|
p.deleteCallback()
|
|
}
|
|
|
|
func (p *overwrittenMethodsOnCallback) Run() {
|
|
fmt.Println("GoCallback.Run")
|
|
}
|