스캐너를 사용하여 특정 줄 번호부터 시작하는 파일 읽기
Go에서는 bufio.Scanner를 사용하여 파일 줄을 읽을 수 있습니다. 줄로. 그러나 bufio.Scanner는 특정 줄 번호부터 읽기를 시작할 수 있는 내장 옵션을 제공하지 않습니다.
다음은 줄을 건너뛰고 읽기를 시작할 수 있는 사용자 정의 SplitFunc로 bufio.Scanner를 확장하는 방법입니다. 원하는 줄 번호:
func scannerWithStartLine(input io.ReadSeeker, start int64) (*bufio.Scanner, error) { if _, err := input.Seek(start, 0); err != nil { return nil, err } scanner := bufio.NewScanner(input) scanner.Split(func(data []byte, atEOF bool) (n int, err error) { if atEOF && len(data) == 0 { return 0, io.EOF } for i := 0; i < len(data); i++ { if data[i] == '\n' { return i + 1, nil } } return 0, nil }) return scanner, nil }
이 함수는 io.ReadSeeker(예: 파일)와 시작 줄 번호를 사용하고 시작 줄 번호에 도달할 때까지 줄을 건너뛰는 bufio.Scanner를 반환합니다.
이 확장된 bufio.Scanner를 사용하려면 다음 단계를 따르세요.
예는 다음과 같습니다.
file, err := os.Open("input.txt") if err != nil { // Handle error } startLine := 5 scanner, err := scannerWithStartLine(file, startLine) if err != nil { // Handle error } for scanner.Scan() { fmt.Println(scanner.Text()) }
이 코드는 "input.txt" 파일의 5번째 줄부터 읽습니다.
위 내용은 Go에서 bufio.Scanner를 사용하여 특정 줄 번호부터 시작하는 파일을 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!