typestar

Interfaces embebidas en Go

Una interfaz mayor se arma con otras menores, que es como lo hace io.

type Reader interface {
    Read(p []byte) (int, error)
}

type Closer interface {
    Close() error
}

type ReadCloser interface {
    Reader
    Closer
}

type memoryFile struct {
    data   []byte
    offset int
}

func (m *memoryFile) Read(p []byte) (int, error) {
    if m.offset >= len(m.data) {
        return 0, io.EOF
    }
    n := copy(p, m.data[m.offset:])
    m.offset += n
    return n, nil
}

func (m *memoryFile) Close() error { return nil }

var _ ReadCloser = (*memoryFile)(nil)

Cómo funciona

  1. El embebido lista los conjuntos de métodos a combinar.
  2. io.ReadWriter es exactamente Reader más Writer.
  3. Aceptar la interfaz más chica que necesites es el hábito de Go.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
30
Caracteres a escribir
444
Tokens
133
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 80 segundos.

Escribe este fragmento

Paso 3 de 4 en Interfaces; paso 6 de 19 en Interfaces y genéricos.

← Anterior Siguiente →