如何将Golang终端输入内容改写为长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计888个文字,预计阅读时间需要4分钟。
由于+fmt.Scan+等函数默认从+os.Stdin+读取,但会一直等待用户按下回车键(换行符)才解析;如果只输入了一半就停止,或者输入完毕没按回车,程序就会挂在那儿——这不是bug,是设计如此。
- 它按空格/制表/换行切分输入,适合读多个单词或数字,比如
fmt.Scan(&name, &age)可一次读两个值 - 遇到换行前的空白(开头或中间连续空格)会跳过,但不会跳过换行本身
- 如果输入类型不匹配(比如要读
int却输abc),Scan返回错误且留下未消费的输入,下次调用还会卡在同样位置
想逐行读字符串,该用 bufio.Scanner 还是 bufio.ReadBytes?
bufio.Scanner 是最常用、最安全的选择,尤其读用户手动输入的行;bufio.ReadBytes('\n') 更底层,适合需要保留换行符或处理超长行的场景。
本文共计888个文字,预计阅读时间需要4分钟。
由于+fmt.Scan+等函数默认从+os.Stdin+读取,但会一直等待用户按下回车键(换行符)才解析;如果只输入了一半就停止,或者输入完毕没按回车,程序就会挂在那儿——这不是bug,是设计如此。
- 它按空格/制表/换行切分输入,适合读多个单词或数字,比如
fmt.Scan(&name, &age)可一次读两个值 - 遇到换行前的空白(开头或中间连续空格)会跳过,但不会跳过换行本身
- 如果输入类型不匹配(比如要读
int却输abc),Scan返回错误且留下未消费的输入,下次调用还会卡在同样位置
想逐行读字符串,该用 bufio.Scanner 还是 bufio.ReadBytes?
bufio.Scanner 是最常用、最安全的选择,尤其读用户手动输入的行;bufio.ReadBytes('\n') 更底层,适合需要保留换行符或处理超长行的场景。

