| name | go-composition |
| description | Composición, embedding y extensibilidad en Go. Usar al extender tipos existentes o combinar comportamientos. |
| allowed-tools | Read, Grep, Glob |
Skill: go-composition
Composición, embedding y extensibilidad en Go.
Cuándo usar este skill
- Al extender tipos existentes
- Al combinar comportamientos
- Al implementar herencia de comportamiento
Struct Embedding
type BaseValidator struct {
name string
}
func (b *BaseValidator) Name() string { return b.name }
type TerminologyValidator struct {
BaseValidator
service TerminologyService
}
Interface Embedding
type Reader interface { Read(...) }
type Writer interface { Write(...) }
type ReadWriter interface {
Reader
Writer
}
Composición de Servicios
type CompositeTerminologyService struct {
services []TerminologyService
}
func (c *CompositeTerminologyService) ValidateCode(...) (bool, error) {
for _, svc := range c.services {
valid, err := svc.ValidateCode(...)
if err == nil {
return valid, nil
}
}
return false, errors.New("no service could validate")
}
Decorator Pattern
type LoggingHandler struct {
wrapped Handler
logger Logger
}
func (l *LoggingHandler) Handle(ctx context.Context, req Request) (Response, error) {
l.logger.Info("handling request")
return l.wrapped.Handle(ctx, req)
}