如何在 Go 中从控制台读取包含空格的多词字符串

发布时间 - 2026-01-21 00:00:00    点击率:

`fmt.scan` 只读取空格前的第一个单词,若需完整读取一行(含空格、制表符等),应使用 `bufio.newreader(os.stdin).readstring('\n')`。

在 Go 语言中,fmt.Scan(&variable) 默认以空白字符(空格、制表符、换行符)为分隔符,因此它只能捕获输入中的第一个“单词”,后续内容会被截断或遗留于输入缓冲区。例如,输入 "Hello World!" 时,sentence 仅得到 "Hello"。

要完整读取整行用户输入(包括中间空格、标点及特殊字符),推荐使用 bufio.Reader 配合 ReadString('\n'):

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("请输入一句话:")
    sentence, err := reader.ReadString('\n')
    if err != nil {
        fmt.Println("读取输入时发生错误:", err)
        ret

urn } // ReadString 会保留末尾的 '\n',如需去除可使用 strings.TrimSpace sentence = sentence[:len(sentence)-1] // 简单移除换行符(或改用 strings.TrimSpace) fmt.Printf("你输入的是:%q\n", sentence) }

关键说明

  • bufio.NewReader(os.Stdin) 创建高效、带缓冲的输入读取器;
  • ReadString('\n') 会持续读取直到遇到换行符(\n),并返回包含该换行符的字符串;
  • 实际使用中建议检查 err(如用户意外关闭输入流),避免忽略错误;
  • 若需清理首尾空白(包括 \n、\r、空格),可导入 "strings" 并调用 strings.TrimSpace(sentence),更安全可靠。

⚠️ 注意:不要混用 fmt.Scan 和 bufio.Reader 读取同一输入流,否则可能因缓冲区残留导致不可预期行为。统一使用 bufio 是处理多词/整行输入的最佳实践。


# go  # ai  # 字符串  # 第一个  # 换行符  # 的是  # 若需  # 推荐使用  # 请输入  # 句话  # 如需  # 发生错误  # 移除 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 新三国志曹操传主线渭水交兵攻略  JavaScript如何实现继承_有哪些常用方法  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  js实现获取鼠标当前的位置  网站建设保证美观性,需要考虑的几点问题!  JavaScript如何实现类型判断_typeof和instanceof有什么区别  如何有效防御Web建站篡改攻击?  Linux系统命令中screen命令详解  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  如何续费美橙建站之星域名及服务?  如何为不同团队 ID 动态生成多个“认领值班”按钮  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  移动端脚本框架Hammer.js  网易LOFTER官网链接 老福特网页版登录地址  linux top下的 minerd 木马清除方法  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  如何在橙子建站中快速调整背景颜色?  深圳网站制作平台,深圳市做网站好的公司有哪些?  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  微信小程序 五星评分(包括半颗星评分)实例代码  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  黑客入侵网站服务器的常见手法有哪些?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  微信小程序 HTTPS报错整理常见问题及解决方案  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  Laravel安装步骤详细教程_Laravel环境搭建指南  JS碰撞运动实现方法详解  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Python3.6正式版新特性预览  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  Laravel Session怎么存储_Laravel Session驱动配置详解  非常酷的网站设计制作软件,酷培ai教育官方网站?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  js实现点击每个li节点,都弹出其文本值及修改  phpredis提高消息队列的实时性方法(推荐)  Laravel如何发送系统通知?(Notification渠道示例)  如何快速启动建站代理加盟业务?  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  如何选择可靠的免备案建站服务器?  Laravel如何为API生成Swagger或OpenAPI文档  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  bootstrap日历插件datetimepicker使用方法