2017-04-19 1 views
1
reader := bufio.NewReader(os.Stdin) 
fmt.Print("Enter text: ") 
text, _ := reader.ReadString('\n') 
fmt.Println("Hello",text) 

사용자가 null 값을 입력했는지 확인하고 코드를 어디에 넣어야합니까? 참고 - 나는 이미 길이 = 0= " "을 검사하려고 시도했지만 작동하지 않는 것 같습니다.사용자가 이동에 null 값을 입력했는지 어떻게 확인합니까?

다른 방법을 제안하십시오. 감사!

+2

내가 생각하는 의미가 "null 값 입력"하지 않습니다 당신이 이전에 strings.TrimSpace()라는 경우는 빈 문자열 ""에 비교할 수 있습니다. Null은 입력이 없음을 나타냅니다. 당신이 스트림 입력에서 얻을 수있는 가장 가까운 길이는 길이가 0 인 문자열이지만,''''은 Go (또는 거의 모든 언어)에서'nil '과 같지 않다는 것을 알 것입니다. – Flimzy

+0

http://stackoverflow.com/questions/18594330/what-is-the-best-way-to-test-for-an-empty-string-in-go –

답변

6

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) 
} 
관련 문제