package api import ( "fmt" "io" "os" ) type Widget struct { Hello Writer io.Writer } func NewWidget(name, id string) *Widget { return &Widget{ Hello: Hello{ Name: name, ID: id, Version: 1, }, Writer: os.Stdout, } } func (w *Widget) Handle() error { if len(os.Args) < 2 { return fmt.Errorf("no method") } switch Method(os.Args[1]) { case MethodHello: return w.Hello.Respond(w.Writer) } return fmt.Errorf("unknown method: %s", os.Args[1]) }