菜鸟求教,一个简单无限循环代码,但为什么输入bye,却无法结束呢?
package main
import(
"bufio"
"fmt"
"os"
"strings"
)
func main(){
inputReader := bufio.NewReader(os.Stdin)
fmt.Println("Please input your name:")
input,err := inputReader.ReadString('\n')
if err!=nil{
fmt.Printf("An error occurred :%s\n", err)
os.Exit(1)
}else{
name := input[:len(input)-1]
fmt.Printf("hello,%s What can i do for you!", name)
}
for {
input,err = inputReader.ReadString('\n')
if err!=nil{
fmt.Printf("An error occurred :%s\n", err)
continue
}
input = input[:len(input)-1]
input = strings.ToLower(input)
switch input{
case "":
continue
case "bye":
fmt.Println("bye!")
os.Exit(0)
default:
fmt.Printf("Sorry,I didn't catch you.")
}
}
}
好像找到原因 了。
//划重点,下面改成input = input[:len(input)-2] 就可以了。
// input = input[:len(input)-1]
input = input[:len(input)-2]
input = strings.ToLower(input)
switch input{
case "":
continue
case "bye":
fmt.Println("bye!")
os.Exit(0)
default:
fmt.Printf("Sorry,I didn't catch you.")
}
}
我用编译器看了一下,我输入bye的时候,编译器统计它是5个字符,总共是bye\n,\n是换行字符,所以必须切割掉\n,总共2个字符。刚学习Go,可能表达上不是很准确,但大概就是这么个意思。
#6
更多评论