在處理檔案時,通常需要讀取特定行。在 Go 中,有多種方法可以實現此目的,但最直接、最有效的方法之一是使用 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中文網其他相關文章!