ファイルを操作するとき、多くの場合、特定の行を読み取ることが必要になります。 Go では、これを実現するためのさまざまなアプローチがありますが、最も簡単で効率的な方法の 1 つは、bufio.Scanner 型を使用することです。
質問で提供されている ReadLine 関数は、bufio.Scanner を使用して、次の行を反復処理します。ファイル。ただし、効率を向上させるためにいくつかの最適化を行うことができます。
以下の変更された関数は、bufio.Scanner が文字列としての行とエラーの両方を返すという事実を利用しています。
<code class="go">func ReadLine(r io.Reader, lineNum int) (line string, lastLine int, err error) { sc := bufio.NewScanner(r) for sc.Scan() { lastLine++ if lastLine == lineNum { return sc.Text(), lastLine, sc.Err() } } return line, lastLine, io.EOF }</code>
この最適化結果を返すときに sc.Err() を追加で呼び出す必要がなくなり、パフォーマンスがわずかに向上します。
オリジナルの ReadLine 関数は、Go でファイルから特定の行を読み取る簡単かつ効果的な方法を提供します。上記の最適化により、不要な関数呼び出しとメモリ割り当てが削減され、効率が向上します。
以上がGo でファイルから特定の行を効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。