golang 中的一个bug

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

提示 如果你是Windows系统,在使用 Scanf 时,有一个地方需要注意。看下面的代码: for i := 0; i < 2; i++ { var name string fmt.Print("Input Name:") n , err := fmt.Scanf("%s", &name) fmt.Println(n, err, name) } 编译 、运行(或直接 go run ),输入:polaris回车。控制台内如下: Input Name:polaris 1 polaris Input Name:0 unexpected newline 为什么不是让输入两次?第二次好像有默认值一样。 同样的代码在Linux下正常。个人认为这是go在Windows下的一个bug,已经向官方提出:issue5391。 目前的解决方法是:换用Scanln或者改为Scanf(“%s\n”, &name)

End.


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

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

1695 次点击  
加入收藏 微博
4 回复  |  直到 2018-12-21 12:05:22
Geekoo-Joker
Geekoo-Joker · #1 · 6年之前

windows 系统 敲回车 是 \r\n 其他系统 敲回车 只是 \n

\n 是字符串结束符 \r是普通的字符串 (代表回车键 计算机基础)

Geekoo-Joker
Geekoo-Joker · #2 · 6年之前

标题党,骗人家进来 说是 go 的bug

哼~

stvenyin
stvenyin · #3 · 6年之前

stvenyin
stvenyin · #4 · 6年之前

我遇到的问题record.

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