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
- Cualquier cosa que lea bytes satisface Reader.
io.Copymueve bytes entre cualquier par de ellas.strings.NewReaderybytes.Bufferson los dobles de prueba.
Palabras clave y builtins usados aquí
errorfuncifintint64lenreturnstringvar
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.
Paso 1 de 3 en Interfaces estándar; paso 10 de 19 en Interfaces y genéricos.