func (f *Filter) Apply(in <-chan string) <-chan string {
	var out <-chan string
	out = f.Funcs[len(f.Funcs)-1](in)
	for i := len(f.Funcs) - 2; i >= 0; i-- {
		out = f.Funcs[i](out)
	}
	return out
}
Apply runs the filter on a channel.
package main
type Filterer func(in <-chan string) <-chan string
type Filter struct {
	Funcs []Filterer
}
func (f *Filter) Use(fn Filterer) {
	f.Funcs = append(f.Funcs, fn)
}