fmt.Scanln 예상 개행 오류: 동작 이해
Go의 fmt.Scanln 함수는 이후에 누락된 개행이 발견되면 오류를 발생시킵니다. 입력 줄을 읽는 중입니다. C의 getline 메소드와 달리 이 동작은 의도적이며 fmt.Scanln의 특정 구현에 의해 구동됩니다.
Scan 대 Scanln
fmt.Scan은 입력을 읽습니다. 공백으로 구분된 값을 지정하여 지정된 인수에 저장합니다. 개행 문자는 공백 문자로 처리됩니다. 대조적으로, fmt.Scanln은 개행에서 스캔을 중지하고 스캔된 마지막 항목 뒤에는 개행이 있어야 합니다. 이러한 차이는 의도된 사용법에서 발생합니다.
오류
입력 뒤에 개행 없이 fmt.Scanln을 사용하면 오류가 발생합니다. 함수가 줄 바꿈이 줄을 종료할 것으로 예상하기 때문에 트리거됩니다. 오류 메시지 "Scan: Expected newline"이 이러한 상황을 나타냅니다.
C의 getline과 비교
C의 getline 메소드는 입력 라인을 읽고 저장합니다. 제공된 문자열 변수에 있습니다. fmt.Scanln과 달리 getline은 입력 끝에 개행 문자가 필요하지 않습니다. 이러한 차이점은 getline이 일반적으로 전체 행을 읽는 데 사용되는 반면 fmt.Scanln은 행 내의 특정 값을 스캔하도록 설계되었기 때문입니다.
행 읽기의 대안
Go에서 전체 입력 줄을 읽어야 하는 경우 bufio.Reader 유형의 ReadString 메서드를 사용할 수 있습니다.
<code class="go">line, err := buffer.ReadString('\n')</code>
이 메서드는 개행 문자를 만날 때까지 입력을 읽고 저장합니다. line 변수의 라인.
fmt.Scanln의 동작과 C의 getline 메소드와의 차이점을 이해하면 이러한 함수를 효과적으로 사용하여 Go 프로그램에서 입력 구문 분석을 처리할 수 있습니다.
위 내용은 Go의 Scan과 Scanln: 예상되는 개행 동작 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!