>  기사  >  백엔드 개발  >  Go의 Scan과 Scanln: 예상되는 개행 동작 이해

Go의 Scan과 Scanln: 예상되는 개행 동작 이해

Barbara Streisand
Barbara Streisand원래의
2024-10-24 02:54:02296검색

Scan vs. Scanln in Go: Understanding the Expected Newline Behavior

fmt.Scanln 예상 개행 오류: 동작 이해

Go의 fmt.Scanln 함수는 이후에 누락된 개행이 발견되면 오류를 발생시킵니다. 입력 줄을 읽는 중입니다. C의 getline 메소드와 달리 이 동작은 의도적이며 fmt.Scanln의 특정 구현에 의해 구동됩니다.

Scan 대 Scanln

fmt.Scan은 입력을 읽습니다. 공백으로 구분된 값을 지정하여 지정된 인수에 저장합니다. 개행 문자는 공백 문자로 처리됩니다. 대조적으로, fmt.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.