typestar

io.Reader e io.Writer en Go

Las dos interfaces que permiten conectar cosas sin relación entre sí.

func pipe(text string) (string, int64, error) {
    source := strings.NewReader(text)
    var sink strings.Builder

    written, err := io.Copy(&sink, source)
    if err != nil {
        return "", 0, fmt.Errorf("copy: %w", err)
    }
    return sink.String(), written, nil
}

func countingReader(text string) (int, error) {
    reader := io.LimitReader(strings.NewReader(text), 8)
    data, err := io.ReadAll(reader)
    return len(data), err
}

Cómo funciona

  1. Cualquier cosa que lea bytes satisface Reader.
  2. io.Copy mueve bytes entre cualquier par de ellas.
  3. strings.NewReader y bytes.Buffer son los dobles de prueba.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
401
Tokens
115
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 66 segundos.

Escribe este fragmento

Paso 1 de 3 en Interfaces estándar; paso 10 de 19 en Interfaces y genéricos.

← Anterior Siguiente →