Go 检查用户输入字符串
我是刚来戈兰的新人,遇到了这种情况的问题: 即使用户的输入是“1”,它也不会输入if语句Go 检查用户输入字符串,go,Go,我是刚来戈兰的新人,遇到了这种情况的问题: 即使用户的输入是“1”,它也不会输入if语句 package main import ( "bufio" "fmt" "os" "strconv" "math" "strings" ) func prompt(toprint string) string{ if(toprint == ""){ toprint = "Enter text :"; } reader
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
。来自(我的重点):
ReadString
一直读取,直到输入中第一次出现delim
,返回一个包含数据的字符串,直到并包括分隔符。如果ReadString
在查找分隔符之前遇到错误,它将返回在错误之前读取的数据以及错误本身(通常是io.EOF
)。ReadString返回err!=nil
当且仅当返回的数据不以delim结尾时。对于简单的使用,扫描仪
可能更方便
也许你想做什么
return strings.TrimSpace(text)
在
prompt()
的末尾,这是因为reader.ReadString
返回包括分隔符在内的所有文本,因此返回的字符串将是1\n
而不仅仅是1
。来自(我的重点):
ReadString
一直读取,直到输入中第一次出现delim
,返回一个包含数据的字符串,直到并包括分隔符。如果ReadString
在查找分隔符之前遇到错误,它将返回在错误之前读取的数据以及错误本身(通常是io.EOF
)。ReadString返回err!=nil
当且仅当返回的数据不以delim结尾时。对于简单的使用,扫描仪
可能更方便
也许你想做什么
return strings.TrimSpace(text)
在提示符()的末尾
谢谢!
下面是返回正确输入的“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];
}
谢谢大家!!
下面是返回正确输入的“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];
}