bufio.Reader.ReadString()
이 경우 개행 문자 \n
에, 또한 가 분리 문자를 포함하는 string
을 반환합니다. 사용자가 단지 이 Enter 키를 누를 아무 것도 입력하지 않으면
, ReadString()
의 반환 값은 "\n"
될 것입니다, 그래서 당신은 빈 입력을 확인 "\n"
에 결과를 비교할 수 있습니다
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, err := reader.ReadString('\n')
if err != nil {
panic(err) // Don't forget to check and handle returned errors!
}
if text == "\n" {
fmt.Println("No input!")
} else {
fmt.Println("Hello", text)
}
보다 나은 대안은 앞뒤 공백 문자를 제거하는 strings.TrimSpace()
을 사용하는 것입니다 (줄 바꿈 포함, 누군가 공백을 입력하고 을 입력하면을 입력하면 의미있는 이름이 아닙니다.이 솔루션도이를 필터링합니다).
text = strings.TrimSpace(text)
if text == "" {
fmt.Println("No input!")
} else {
fmt.Println("Hello", text)
}
내가 생각하는 의미가 "null 값 입력"하지 않습니다 당신이 이전에
strings.TrimSpace()
라는 경우는 빈 문자열""
에 비교할 수 있습니다. Null은 입력이 없음을 나타냅니다. 당신이 스트림 입력에서 얻을 수있는 가장 가까운 길이는 길이가 0 인 문자열이지만,''''은 Go (또는 거의 모든 언어)에서'nil '과 같지 않다는 것을 알 것입니다. – Flimzyhttp://stackoverflow.com/questions/18594330/what-is-the-best-way-to-test-for-an-empty-string-in-go –