# Go Composition

> Composición, embedding y extensibilidad en Go. Usar al extender tipos existentes o combinar comportamientos. Use when this capability is needed.

- Skill: `tomevault-io/go-composition` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/go-composition`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/go-composition/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/go-composition

---


# 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

```go
type BaseValidator struct {
    name string
}

func (b *BaseValidator) Name() string { return b.name }

type TerminologyValidator struct {
    BaseValidator  // Embedding
    service TerminologyService
}

// TerminologyValidator hereda Name() automáticamente
```

## Interface Embedding

```go
type Reader interface { Read(...) }
type Writer interface { Write(...) }

type ReadWriter interface {
    Reader
    Writer
}
```

## Composición de Servicios

```go
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

```go
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)
}
```

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/gofhir) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-13 -->

