Go에서의 입력 소비 이해: 플러싱 및 대안
터미널을 통해 사용자와 상호작용할 때 잘못된 입력을 처리하는 것이 어려울 수 있습니다. Go에서 fmt.Scanf()를 사용하여 입력을 읽으면 사용자가 정수가 아닌 값을 입력할 때 문제가 발생할 수 있습니다. 이는 fmt.Scanf()가 전체 라인을 사용하지 않고 후속 입력을 방해할 수 있는 잔여 문자를 남기기 때문입니다.
이 문제를 해결하기 위한 한 가지 옵션은 유효하지 않은 항목 이후에 입력 버퍼를 명시적으로 플러시하는 것입니다. . 그러나 Go는 Stdin을 플러시하는 직접적인 방법을 제공하지 않습니다.
대체 접근 방식:
<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>
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!