"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > \ "fmt.scanln은 Newline \"오류를 예상하고이를 해결하는 방법의 원인은 무엇입니까?

\ "fmt.scanln은 Newline \"오류를 예상하고이를 해결하는 방법의 원인은 무엇입니까?

2025-02-06에 게시되었습니다
검색:241

What Causes \

fmt.scan vs fmt.scanln

fmt.scan은 공간-분리 된 값을 읽습니다. 표준 입력에서 Newlines를 공간 문자로 취급합니다. 즉, 모든 인수가 채워 지거나 오류가 발생할 때까지 입력을 계속 구문 분석합니다. 반면에 Fmt.scanln은 표준 입력에서 읽지 만 Newline 문자를 종료 지점으로 기대합니다. 그 후의 입력은 구문 분석되지 않습니다.

예제

제공된 Go 코드에서 fmt.scanln을 사용하여 문자열을 읽을 때 문제가 발생합니다. 입력에는 fmt.scanln의 입력 끝을 트리거하는 Newline 문자가 포함됩니다. 그러나 후속 입력 캐릭터 "Everybody Loves Ice Cream"은 여전히 ​​존재하며 후속 FMT.Scan에 의해 소비됩니다. Fmt.scan은 입력 끝에서 Newline을 기대하기 때문에 오류가 발생합니다.

대안

는 공백을 포함하고 새로운 라인으로 끝나는 텍스트 줄을 읽습니다. , bufio.reader의 readString 메소드 사용을 고려하십시오 :

"bufio"가져 오기 func main () { 독자 : = bufio.NewReader (OS.Stdin) line, err : = reader.String ( '\ n') }

import "bufio"

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

fmt.scan 및 fmt.scanln의 뚜렷한 동작을 이해하는 것은 오류를 방지하고 기대에 맞는 코드를 작성하는 데 중요합니다. 텍스트 한 줄을 읽을 때 Bufio.reader 및 ReadString과 같은 대안은보다 명확하고 효율적인 솔루션을 제공합니다.

릴리스 선언문 이 기사는 1729685100에 재현됩니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3