Skip to content

Instantly share code, notes, and snippets.

@smagch
Created March 24, 2013 15:20
Show Gist options
  • Select an option

  • Save smagch/5232311 to your computer and use it in GitHub Desktop.

Select an option

Save smagch/5232311 to your computer and use it in GitHub Desktop.
package main
import (
"log"
)
type Manager struct {
doers []Doer
}
func New() *Manager {
return &Manager{[]Doer{}}
}
func (m *Manager) Add(d Doer) {
log.Println("accept doer")
m.doers = append(m.doers, d)
}
func (m *Manager) Run() {
for _, doer := range m.doers {
doer.Do()
}
}
type Doer interface {
Do()
}
type MyDoer struct {
name string
age int
}
func (d *MyDoer) Do() {
log.Printf("Do! %s, %d", d.name, d.age)
}
func main() {
m := New()
m.Add(&MyDoer{"tomoya", 28})
m.Add(&MyDoer{"smagch", 100})
log.Printf("length is %d", len(m.doers))
m.Run()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment