>  기사  >  백엔드 개발  >  \"fmt.Scanln Expected Newline\" 오류의 원인과 해결 방법은 무엇입니까?

\"fmt.Scanln Expected Newline\" 오류의 원인과 해결 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-24 02:07:02923검색

What Causes

fmt.Scanln 예상

Go에서 fmt.Scanln을 사용할 때 "fmt.Scanln에 개행이 필요합니다."라는 오류가 발생할 수 있습니다. 강력한 코드를 디버깅하고 작성하려면 이 오류와 그 의미를 이해하는 것이 중요합니다.

fmt.Scan과 fmt.Scanln의 동작

fmt.Scan은 공백으로 구분된 값을 읽습니다. 표준 입력에서 개행 문자를 공백 문자로 처리합니다. 이는 모든 인수가 채워지거나 오류가 발생할 때까지 입력을 계속 구문 분석한다는 것을 의미합니다. 반면에 fmt.Scanln은 표준 입력에서도 읽지만 종료 지점으로 개행 문자를 기대합니다. 그 이후의 모든 입력은 구문 분석되지 않습니다.

제공된 Go 코드에서 fmt.Scanln을 사용하여 문자열 s를 읽을 때 문제가 발생합니다. 입력에는 fmt.Scanln에 대한 입력 끝을 트리거하는 개행 문자가 포함되어 있습니다. 그러나 후속 입력 문자인 "Everybody Loves Ice Cream"은 여전히 ​​존재하며 후속 fmt.Scan에서 사용됩니다. fmt.Scan은 입력 끝에 개행 문자를 예상하므로 오류가 발생합니다.

대안

공백을 포함하고 개행 문자로 끝나는 텍스트 줄을 읽으려면 , bufio.Reader의 ReadString 메소드 사용을 고려하십시오.

<code class="go">import "bufio"

func main() {
    reader := bufio.NewReader(os.Stdin)
    line, err := reader.ReadString('\n')
}</code>

결론

오류를 방지하고 쓰기 위해서는 fmt.Scan 및 fmt.Scanln의 고유한 동작을 이해하는 것이 중요합니다. 기대에 부합하는 코드. 텍스트 줄을 읽을 때 bufio.Reader 및 ReadString과 같은 대안은 보다 명확하고 효율적인 솔루션을 제공합니다.

위 내용은 \"fmt.Scanln Expected Newline\" 오류의 원인과 해결 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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