| 123456789101112131415161718192021222324252627282930313233343536373839 | package predicatetype Predicate func() boolfunc (v Predicate) And(predicate Predicate) Predicate {	return All(v, predicate)}func (v Predicate) Or(predicate Predicate) Predicate {	return Any(v, predicate)}func All(predicates ...Predicate) Predicate {	return func() bool {		for _, p := range predicates {			if !p() {				return false			}		}		return true	}}func Any(predicates ...Predicate) Predicate {	return func() bool {		for _, p := range predicates {			if p() {				return true			}		}		return false	}}func Not(predicate Predicate) Predicate {	return func() bool {		return !predicate()	}}
 |