| 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") |
| } |