typestar

Las interfaces se satisfacen implícitamente en Go

Sin palabra clave implements: el tipo tiene los métodos, así que encaja.

type Scorer interface {
    Score() int
}

type Snippet struct{ Lines int }
type Script struct{ Lines int }

func (s Snippet) Score() int { return s.Lines }
func (s Script) Score() int  { return s.Lines * 2 }

var _ Scorer = Snippet{} // no compila si falta el método

func total(items []Scorer) int {
    sum := 0
    for _, item := range items {
        sum += item.Score()
    }
    return sum
}

Cómo funciona

  1. La interfaz puede declararse después de los tipos que la satisfacen.
  2. Las interfaces pequeñas son el hábito de Go — a menudo un solo método.
  3. Una aserción en tiempo de compilación documenta la intención.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
370
Tokens
95
Ritmo de tres estrellas
100 tpm

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

Escribe este fragmento

Paso 2 de 4 en Interfaces; paso 5 de 19 en Interfaces y genéricos.

← Anterior Siguiente →