3

Python のfileinput.inputの Go 類似物はありますか?

import fileinput
for line in fileinput.input():
    process(line)

これにより、プログラムは次のようgrepに機能します。program input.txtコマンドラインまたは標準入力から指定されたファイルから読み取ることができますcat input.txt | program

Perl の diamond 演算子<>と Ruby の ARGF は似ています。

4

2 に答える 2

2

いくつかのオプションがあります。このfileinput.input()関数はファイル名もチェックsys.args[1:]しますが、ここでは stdin からの読み取りに焦点を当てます。

を使用しScannerます。ドキュメントの例 ( http://play.golang.org/p/_Nar8-uBDs ):

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        fmt.Println(scanner.Text()) // Println will add back the final '\n'
    }
    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "reading standard input:", err)
    }
}

低レベルの代替手段はbufio.Reader、そのReadString()メソッド ( http://play.golang.org/p/h2sobrWNYd ) を使用することです。

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    rbuf := bufio.NewReader(os.Stdin)
    for {
        line, err := rbuf.ReadString('\n')
        fmt.Print(line)
        if err != nil {
            // line contains the last remaining characters or is empty
            // it is only empty if '\n' was the last character in the input
            break
        }
    }
}

最低レベルの代替手段については、 を参照してくださいReadLine()

于 2013-07-13T11:07:56.417 に答える
0

いいえ、標準ライブラリには Go の類似物はありません。ただし、 stding または名前付きファイルの読み取りはほんの一握りの行です ( example )

于 2013-07-13T10:52:37.123 に答える