Go 从标准输入读取数据

fmt.Scan系列

fmt.Scan函数定义如下:

// Scan scans text read from standard input, storing successive space-separated values into successive arguments.
// Newlines count as space. 
// It returns the number of items successfully scanned.
// If that is less than the number of arguments, err will report why.
func Scan(a ...any) (n int, err error) {return Fscan(os.Stdin, a...)
}

使用fmt.Scan扫描到空格的时候,就会结束扫描。在acm类比赛中,输入时数据可能按空格拆分,所以读取完整的数据十分不便,需要借助循环才能达到目的。

package mainimport "fmt"func main() {str := ""fmt.Scan(&str)fmt.Println(str)
}

输入hello ffff
只能扫描到第一个完整的单词,hello
在这里插入图片描述
当需要扫描多个用空格分隔的字符串时候,使用循环来读取后续字符串

package mainimport ("fmt"
)func main() {str := ""for {n, err := fmt.Scan(&str)fmt.Println(n, err, str)if err != nil {break}}
}

按ctrl + c组合键可终结输入,可以看到,当读入ctrl+c终结符的时候,err 保存了EOF(文件尾标志)。hi与hey之间有多个空白字符,按一个处理。
在这里插入图片描述

bufio.NewScanner(os.Stdin)系列

package mainimport ("bufio""fmt""os"
)func main() {scanner := bufio.NewScanner(os.Stdin)isOk := scanner.Scan()fmt.Println(isOk)text := scanner.Text() // 获取stringfmt.Println(text)bytes := scanner.Bytes() // 获取byte切片fmt.Println(bytes)
}

bufio.NewScanner可以按整行读取字符串,同时Text方法返回字符串,Bytes方法返回字节切片
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/433363.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

区块链技术在金融领域的应用

区块链技术在金融领域的应用广泛,它提供了一种分布式、去中心化、透明且安全的方式来进行交易和资产管理。以下是一些区块链技术在金融领域的主要应用,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎…

达梦数据库——记录一次离谱的登录失败报错

好久没更新了哇 前面有整理过一些常见的数据库登录失败问题哈,今天记录一个遇到概率比较小,但碰上了一般不太容易找到原因的登录失败问题。 今天给客户同时初始化了三台服务器数据库,惟独这一台死活登不进去,满脑子问号&#xf…

08.Elasticsearch应用(八)

Elasticsearch应用(八) 1.为什么需要相关性算分 我们在文档搜索的时候,匹配程度越高的相关性算分越高,算分越高的越靠前,但是有时候我们不需要算分越高越靠前我们可能需要手动影响算分来控制顺序比如广告&#xff08…

【unity小技巧】使用动画状态机脚本实现一个简单3d敌人AI功能

文章目录 敌人导航敌人动画导入动画修改循环动画配置其他不循环的动画配置 配置敌人模型动画配置敌人受伤死亡脚本控制敌人状态机待机 行走 巡逻 攻击状态修改待机行为脚本修改巡逻行为脚本修改追击行为脚本修改攻击行为脚本 删除旧的动画控制代码创建寻路点 修改代码&#xff…

Vue组件之间的通信方式都有哪些

Vue组件之间的通信方式 组件间通信的概念组件间通信解决了什么组件间通信的分类 父子组件之间的通信兄弟组件之间的通信祖孙与后代组件之间的通信非关系组件间之间的通信 组件间通信的方案 props传递数据$emit 触发自定义事件refEventBusparent、rootattrs与listenersprovide …

【时间序列篇】基于LSTM的序列分类-Pytorch实现 part1 案例复现

系列文章目录 【时间序列篇】基于LSTM的序列分类-Pytorch实现 part1 案例复现 【时间序列篇】基于LSTM的序列分类-Pytorch实现 part2 自有数据集构建 【时间序列篇】基于LSTM的序列分类-Pytorch实现 part3 化为己用 本篇文章是对已有一篇文章的整理归纳,并对文章中…

【详解】贪吃蛇游戏----上篇(介绍控制台和API等知识)

目录 知识点: Win32 API 宽字符的打印 控制台操作: (1)调整控制台大小 (2)控制台屏幕上的坐标COORD GetStdHandle GetConsoleCursorInfo CONSOLE_CURSOR_INFO SetConsoleCursorInfo SetConsoleC…

Tortoise-tts Better speech synthesis through scaling——TTS论文阅读

笔记地址:https://flowus.cn/share/a79f6286-b48f-42be-8425-2b5d0880c648 【FlowUs 息流】tortoise 论文地址: Better speech synthesis through scaling Abstract: 自回归变换器和DDPM:自回归变换器(autoregressive transfo…

RabbitMQ问题总结

:::info 使用场景 异步发送(验证码、短信、邮件。。。)MySQL 和 Redis、ES 之间的数据同步分布式事务削峰填谷… ::: 如何保证消息不丢失 上图是消息正常发送的一个过程,那在哪个环节中消息容易丢失?在哪一个环节都可能丢失 生…

C#用 DateAndTime.DateAdd方法和DateTime.Add(TimeSpan) 方法分别添加一段时间间隔

目录 一、基本方法 1.用 DateAndTime.DateAdd方法添加一段时间间隔 2.用DateTime.Add方法添加一段时间间隔 二、实例 1.实例1:用 DateAndTime.DateAdd方法 2.实例2:用DateTime.Add方法 一、基本方法 1.用 DateAndTime.DateAdd方法添加一段时间间隔…

【STM32】STM32学习笔记-BKP备份寄存器和RTC实时时钟(42)

00. 目录 文章目录 00. 目录01. BKP简介02. BKP特性03. BKP基本结构04. RTC简介05. RTC主要特性06. RTC框图07. RTC基本结构08. 硬件电路09. RTC操作注意事项10. 附录 01. BKP简介 备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备…

物联网IOT视频设备如何快速对接阿里云生活物联网(Link Visual)并成功上云?

原文永久更新地址:https://www.yundashi168.com/472.html 文章来源:猿视野 如果有图片看不清楚,加载不出来,请阅读原文。 什么是Link Visual、 Link Visual是生活物联网平台针对视频产品推出的增值服务,提供视频数据上…