[英]Checking user input string
我是GoLang的新手,並且遇到這種情況的問題:即使用戶的輸入為“ 1”,也不會在if語句中輸入。
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"math"
"strings"
)
func prompt(toprint string) string{
if(toprint == ""){
toprint = "Enter text :";
}
reader := bufio.NewReader(os.Stdin);
fmt.Println(toprint);
text, _ := reader.ReadString('\n');
return text;
}
func main() {
choice := prompt("Please enter '1'");
if(strings.Compare("1",choice)==0||choice=="1"){
// D'ONT ENTER HERE EVEN WHEN choice=="1"
}else{
// Always go here
}
}
謝謝您的幫助。
這是因為reader.ReadString
返回所有包含定界符的文本,所以返回的字符串將是1\\n
而不是1
。 從文檔 (我的重點)中:
func (*Reader) ReadString func (b *Reader) ReadString(delim byte) (string, error)
ReadString
讀取直到輸入中第一次出現delim
為止,返回一個字符串,其中包含直到delimiter並包括delimiter的數據。 如果ReadString
在找到定界符之前遇到錯誤,它將返回錯誤之前讀取的數據和錯誤本身(通常為io.EOF
)。 當且僅當返回的數據未以delim
結尾時,ReadString返回err != nil
。 對於簡單的用途,Scanner
可能更方便。
也許你想做
return strings.TrimSpace(text)
在prompt()
的末尾。
謝謝 ! 這是返回正確輸入的“ prompt()”代碼:
func prompt(toprint string) string{
if(toprint == ""){
toprint = "Enter text :";
}
reader := bufio.NewReader(os.Stdin);
fmt.Println(toprint);
text, _ := reader.ReadString('\n');
return text[0:len(text)-2];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.