Go에서 잘못된 사용자 입력을 처리하는 방법: Stdin 플러시 및 대안

DDD
풀어 주다: 2024-10-28 09:04:30
원래의
640명이 탐색했습니다.

How to Handle Invalid User Input in Go: Flushing Stdin and Alternatives

Go에서의 입력 소비 이해: 플러싱 및 대안

터미널을 통해 사용자와 상호작용할 때 잘못된 입력을 처리하는 것이 어려울 수 있습니다. Go에서 fmt.Scanf()를 사용하여 입력을 읽으면 사용자가 정수가 아닌 값을 입력할 때 문제가 발생할 수 있습니다. 이는 fmt.Scanf()가 전체 라인을 사용하지 않고 후속 입력을 방해할 수 있는 잔여 문자를 남기기 때문입니다.

이 문제를 해결하기 위한 한 가지 옵션은 유효하지 않은 항목 이후에 입력 버퍼를 명시적으로 플러시하는 것입니다. . 그러나 Go는 Stdin을 플러시하는 직접적인 방법을 제공하지 않습니다.

대체 접근 방식:

  1. fmt.Scanln() 사용: fmt.Scanln()은 공백과 개행 문자를 포함하여 입력 줄을 읽습니다. 전체 라인을 소비하므로 명시적인 플러시가 필요하지 않습니다.
<code class="go">fmt.Println("Please enter an integer:")
var userI int
_, err := fmt.Scanln(&userI)
if err != nil {
    fmt.Println("Sorry, invalid input. Please try again:")
}</code>
로그인 후 복사
  1. 사용자 정의 입력 처리: 사용자 입력을 읽고 검증하는 사용자 정의 함수를 생성합니다. 유효한 입력을 얻을 때까지 유효하지 않은 항목을 삭제합니다.
<code class="go">func GetUserInputInt() int {
    var userI int
    for {
        fmt.Println("Please enter an integer:")
        _, err := fmt.Scanf("%d", &userI)
        if err == nil {
            return userI
        }
        fmt.Println("Sorry, invalid input. Please try again:")
        fmt.Scanln() // Discard invalid input
    }
}</code>
로그인 후 복사

위 내용은 Go에서 잘못된 사용자 입력을 처리하는 방법: Stdin 플러시 및 대안의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!