>백엔드 개발 >Golang >Go\의 fmt.Scanln이 \'예상된 줄바꿈\' 오류를 발생시키는 이유는 무엇입니까?

Go\의 fmt.Scanln이 \'예상된 줄바꿈\' 오류를 발생시키는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-24 04:27:31332검색

Why Does Go's fmt.Scanln Give an

fmt.Scanln 오류: 새 줄이 필요함

Go에서 fmt.Scanln 기능을 사용할 때 "예상 줄 바꿈" 오류가 발생할 수 있습니다. . 이는 입력에서 예상 구분 기호(일반적으로 공백) 앞에 개행 문자가 포함된 경우 발생합니다. 이 문제를 해결하기 위해 fmt.Scan 및 fmt.Scanln의 동작을 자세히 살펴보겠습니다.

fmt.Scan은 표준 입력에서 공백으로 구분된 값을 읽고 줄 바꿈을 공백으로 처리합니다. 이 값을 해당 인수에 할당하여 성공적으로 스캔한 항목의 수를 반환합니다.

fmt.Scanln은 유사하게 동작하지만 개행에서 스캔을 중지합니다. 중요한 점은 성공적으로 완료하려면 입력이 줄바꿈 또는 EOF로 끝나야 한다는 것입니다.

이를 설명하려면 다음 입력을 고려하세요.

123
123.456
everybody loves ice cream

fmt.Scan을 사용할 때 출력은 다음과 같습니다. :

read 1 integer:  123
read 1 float64:  123.456
read 1 string:  everybody
Error:  Scan: expected newline

fmt.Scan은 "everybody love ice cream"을 두 개의 문자열로 해석하여 오류가 발생합니다.

그러나 동일한 입력에 fmt.Scanln을 사용하면 출력이

read 1 integer:  123
read 1 float64:  123.456
read 1 string:  everybody loves ice cream

fmt.Scanln은 개행 문자를 구분 기호로 인식하고 전체 행을 단일 문자열 인수로 올바르게 구문 분석합니다.

개행 문자로 끝나는 행을 읽으려면 자, bufio.Reader와 ReadString 메소드를 사용할 수 있습니다:

line, err := buffer.ReadString('\n')

위 내용은 Go\의 fmt.Scanln이 \'예상된 줄바꿈\' 오류를 발생시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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