同じbufio.Scanner
インスタンスを使用してstdinから行と単語を読み込もうとしています。Golangが行を読み取り、同じbufio.Scannerから単語を読み込みます。
最初に2つのbufio.Scanner
を使用しようとしましたが、2番目のスキャナは何も読み取れません。
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
r := strings.NewReader("first line\n2nd line")
scanner := bufio.NewScanner(r)
scanner2 := bufio.NewScanner(r)
fmt.Println("scanning line")
if scanner.Scan() {
fmt.Println("Scanned line: ", scanner.Text())
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "reading standard input:", err)
}
scanner2.Split(bufio.ScanWords)
fmt.Println("scanning word")
if scanner2.Scan() {
// i'm expecting that this would read "2nd"
fmt.Println("Scanned word: ", scanner2.Text())
}
if err := scanner2.Err(); err != nil {
fmt.Fprintln(os.Stderr, "reading standard input:", err)
}
}
は、その後、私はscanner.Split
を設定しようとしたが、それはscanner.Scan
を呼び出した後scanner.Split
を呼び出すことはできません。
私は行を読み取ることができる方法がありますし、同じからの単語bufio.Scanner
?
([例](https://golang.org/pkg/bufio/#example_Scanner_lines)を参照してください) [strings.Fields](https://golang.org/pkg/strings/#Fields)で単語に分割してください。 – Mark
私は実際にこれらの行と単語の間にこのようなシーケンスを維持したいと考えています。この例では、別の 'scanner2.Text()'を実行した場合、次の単語、つまり「行」を取得したいと思います。しかし、私はあなたのポイントを得る、私はちょうどこれを達成するための他の方法があるかどうか調べている。 – srf
ドキュメンテーションのどの部分が、異なるスキャナーで、同じ基礎となるリーダーで作業できることを示唆していますか? – Volker