Un filtro de línea es un tipo común de programa que lee
entrada en stdin, la procesa y luego imprime algún
resultado derivado en stdout. grep y sed son filtros de línea
comunes.
|
|
Aquí tienes un ejemplo de filtro de línea en Go que escribe una
versión en mayúsculas de todo el texto de entrada. Puedes usar este
patrón para escribir tus propios filtros de línea en Go.
|
package main
|
|
import (
"bufio"
"fmt"
"os"
"strings"
)
|
|
func main() {
|
Envolver el os.Stdin sin buffer con un escáner con buffer
nos da un conveniente método Scan que
avanza el escáner al siguiente token; que es
la siguiente línea en el escáner predeterminado.
|
scanner := bufio.NewScanner(os.Stdin)
|
Text devuelve el token actual, aquí la siguiente línea,
de la entrada.
|
for scanner.Scan() {
|
|
ucl := strings.ToUpper(scanner.Text())
|
Escribe la línea en mayúsculas.
|
fmt.Println(ucl)
}
|
Verifica si hay errores durante Scan . El fin de archivo es
esperado y no es reportado por Scan como un error.
|
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "error:", err)
os.Exit(1)
}
}
|