Go podle Příkladů: Řádkové filtry

Řádkový filtr je běžný druh programu který čte vstup ze stdin, zpracovává ho, a pak vypisuje nějaký odvezený výstup na stdout. Běžné řádkové filtry jsou grep a sed.

Zde je příklad řádkového filtru v Go který zapisuje kapitalizovanou verzi každého textu na vstupu. Můžeš použít tento vzorek při psaní svých vlastních řádkových filtrů.

package main
import (
    "bufio"
    "fmt"
    "os"
    "strings"
)
func main() {

Zabalení nebufferovaného os.Stdin do bufferovaného skenneru nám poskytne užitečnou metodu Scan která posouvá scanner na další token; kterým je další řádek ve výchozím skeneru.

    scanner := bufio.NewScanner(os.Stdin)

Text vrací aktuální token, tady další řádek ze vstupu.

    for scanner.Scan() {
        ucl := strings.ToUpper(scanner.Text())

Zapiš kapitalizovaný řádek.

        fmt.Println(ucl)
    }

Zkontroluj chyby během Scan. Konec souboru je očekávaný a není hlášený ve Scan jako chyba.

    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "chyba:", err)
        os.Exit(1)
    }
}

Vyzkoušej náš řádkový filtry, nejdřív udělej soubor s pár malými znaky.

$ echo 'ahoj'   > /tmp/lines
$ echo 'filtre' >> /tmp/lines

Potom použij řádkový filtr pro získání kapitalizovaných řádků.

$ cat /tmp/lines | go run line-filters.go
AHOJ
FILTRE

Další příklad: Cesty k souborům.