Go菜鸟关于switch问题求指点!

a7223923 · 2018-05-04 20:20:37 · 2697 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-05-04 20:20:37 的主题,其中的信息可能已经有所发展或是发生改变。

菜鸟求教,一个简单无限循环代码,但为什么输入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.")        
    }
}

}


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2697 次点击  
加入收藏 微博
8 回复  |  直到 2018-05-06 22:29:41
a7223923
a7223923 · #1 · 7年之前

单步调试,使用eclipse,input却无法查看到数据的类型,刚入坑,求高手指点

a7223923
a7223923 · #2 · 7年之前

求大神啊,实在搞不清楚问题啊

pengzhenpin
pengzhenpin · #3 · 7年之前

测试完全正常,我估计是你eclipse的坑,你用终端 go run 一下试试

a7223923
a7223923 · #4 · 7年之前
pengzhenpinpengzhenpin #3 回复

测试完全正常,我估计是你eclipse的坑,你用终端 ** go run ** 一下试试

我也怀疑是eclipse的问题,谢谢大神,我试试终端看看

zhaojingzhi
zhaojingzhi · #5 · 7年之前

case "bye":改为case:string(input)

a7223923
a7223923 · #6 · 7年之前

好像找到原因 了。 //划重点,下面改成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,可能表达上不是很准确,但大概就是这么个意思。

a7223923
a7223923 · #7 · 7年之前

也就是把这个,改成减掉2,就可以了。input = input[:len(input)-2]

谢谢各位

a7223923
a7223923 · #8 · 7年之前
zhaojingzhizhaojingzhi #5 回复

case "bye":改为case:string(input)

谢谢哥子

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传