Un line filter è un tipo di programma molto comune
che legge l’input da stdin, lo processa, e ne stampa
l’output su stdout. grep e sed sono comuni esempi
di line filter.
|
|
Ecco un esempio di line filter scritto in Go, che scrive
in maiscuolo tutto il testo che riceve in input. Puoi
utilizzare questo scheletro di line filter per realizzare
il tuo line filter.
|
|
|
import (
"bufio"
"fmt"
"os"
"strings"
)
|
|
|
Tramite NewScanner creiamo un wrapper intorno a
os.Stdin (che è non bufferizzato), permettendoci
di invocare la funzione Scan per ottenere il
prossimo token (in questo caso la prossima linea).
|
scanner := bufio.NewScanner(os.Stdin)
|
Text restituisce il token corrente, in questo caso
la prossima linea dall’input.
|
|
|
ucl := strings.ToUpper(scanner.Text())
|
Stampa la linea in maiuscolo.
|
|
Controlla eventuali errori durante lo Scan .
Un End of file è atteso dallo scanner e non viene
quindi considerato un errore
|
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "error:", err)
os.Exit(1)
}
}
|