type Decorator … type DecoratorFunc … func (d DecoratorFunc) Decorate(handler Interface, name string) Interface { … } type Decorators … // Decorate applies the decorator in inside-out order, i.e. the first decorator in the slice is first applied to the given handler. func (d Decorators) Decorate(handler Interface, name string) Interface { … }