>백엔드 개발 >Golang >fmt.Scanf가 Go에서 항상 사용자 입력을 기다리지 않는 이유는 무엇입니까?

fmt.Scanf가 Go에서 항상 사용자 입력을 기다리지 않는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-19 07:49:09190검색

Why Doesn't fmt.Scanf Always Wait for User Input in Go?

Go에서 fmt.Scanf 문제 이해

Go에서 fmt.Scanf 함수를 사용하면 사용자 입력을 읽고 이를 지정된 변수에 저장할 수 있습니다. 그러나 때때로 사용자는 fmt.Scanf가 첫 번째 스캔 후 사용자 입력을 기다리지 않고 즉시 후속 프롬프트로 이동하는 문제에 직면합니다.

설명

Go에서 fmt.Scanf는 다음을 읽습니다. 표준 입력에서 첫 번째 구분 기호(일반적으로 개행 문자)까지의 문자입니다. 이전 버전의 Go에서는 캐리지 리턴(r)과 줄 바꿈(n)이 Windows 시스템에서 유효한 구분 기호로 간주되지 않았습니다. 이로 인해 사용자가 입력한 첫 번째 문자를 읽은 후 fmt.Scanf가 조기에 종료되었습니다.

해결 방법

이 문제를 해결하려면 간단한 해결 방법은 형식 문자열에 n 구분 기호를 명시적으로 사용하는 것입니다. fmt.Scanf로 전달되었습니다. 예를 들면 다음과 같습니다.

var inputSquare float64
fmt.Scanf("%f\n", &inputSquare)

형식 문자열에 n을 포함하면 입력 완료를 고려하기 전에 개행 문자를 기다리도록 fmt.Scanf에 지시할 수 있습니다. 이렇게 하면 사용자가 Enter를 누르고 입력을 완료할 때까지 프로그램이 일시 중지됩니다.

사용자 입력 유효성 검사

정수에 대한 사용자 입력의 유효성을 검사하려면 strconv.ParseInt 함수를 사용하면 됩니다. 입력된 문자열은 정수로 구문 분석될 수 있으며 발생한 오류를 반환합니다. 예:

inputSquare, err := strconv.ParseInt(inputSquareString, 10, 64)
if err != nil {
    // Handle error
}

결론

앞서 언급한 기술을 사용하면 Go에서 사용자 입력을 기다리지 않는 fmt.Scanf 문제를 효과적으로 해결하고 정수에 대한 적절한 입력 유효성 검사를 구현할 수 있습니다.

위 내용은 fmt.Scanf가 Go에서 항상 사용자 입력을 기다리지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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