本文转自life的leanote博客:http://leanote.com/blog/view/531706971a91084358000000
fmt.Scanln()不是读取一行,而是遇到换行就停止,
Scanln is similar to Scan,but stops scanning at a newline and after the final item there must be a newline or EOF.
举个例子:
vari,j,kint fmt.Scanln(&i,&j,&k) fmt.Println(i,k)
输入1,2 回车后程序结束. 如果换成fmt.Scan()还会让输入的.
使用stdin与reader联合起来读一行数据:
reader:=bufio.NewReader(os.Stdin) strBytes,hasMore,err:=reader.ReadLine()
但bufio与fmt.Scan()一起用时会有错误,可能是bufio的问题,bufio多读,导致fmt.Scan()不能读
还是自己写个方法读一行:
//得到一行 funcScanLine()string{ varcbyte varerrerror varb[]byte for;err==nil;{ _,err=fmt.Scanf("%c",&c) ifc!='\n'{ b=append(b,c) }else{ break; } } returnstring(b) }
原文地址:https://www.jb51.cc/go/190978.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。