package main import ( "errors" "fmt" "hexasoftware/x/sequencer/seq" "log" ) type Xpto struct { ID string } func GenXpto(i int) (*Xpto, error) { log.Println("Generating xpto") return &Xpto{fmt.Sprintf("ID:%d", i)}, nil } func AnotherRandomFunc() error { return errors.New("I have a error") } func NextXpto(id string) error { log.Println("The id was:", id) return nil } func main() { s := seq.New() log.Println("Adding GenXPto") val := &Xpto{} s.Add("Generate Xpto", GenXpto, 10).Grab(&val) s.Add("Consume xpto", func() error { return NextXpto(val.ID) }) s.Add(NextXpto, seq.EP(0)) err := s.Exec("abc") log.Println("Val:", val) if err != nil { log.Println("Error on sequence", err) } }