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 중국어 웹사이트의 기타 관련 기사를 참조하세요!