格式化输入

news2024/12/24 11:44:30

1、golang不同输入语句的区别:

特点
ScanScanlnScanf从控制台读取内容
SscanSscanlnSscanf从指定字符串中读取内容
FscanFscanlnFscanf从文本中读取内容
特点在读取内容的时候不会关注换行在读取内容的时候, 遇到换行时结束以格式化的方式读取内容,遇到换行时结束

2、fmt.Scan(a ...interface{}) (n int, err error):

Scan扫描从标准输入读取的文本,将连续的空格分隔值存储在连续的参数中,换行符算作空格。它返回成功扫描的项目数,如果小于参数的数量,则err将报告错误原因。例如:

package main

import "fmt"

func main() {
	var (
		name    string
		age     int
		married bool
	)
	fmt.Println("请输入姓名,年龄,是否已婚")
	//Scan可以接收多个参数,用户输入参数默认使用空格或者回车换行符分割输入设备传入的参数,直到接收所有的参数为止。
	fmt.Scan(&name, &age, &married)
	fmt.Println(name, age, married)
}

注意: golang中使用"&"获取score变量(要定义的变量,也就是变量名)的内存地址(即取变量内存地址的运算符),通过键盘输入为score变量指向的内存地址赋初值。

3、func Scanln(a ...interface{}) (n int, err error):

Scanln类似于Scan,但是如果遇到换行就停止扫描,并且在最后一项之后必须有换行符或者EOF。例如:

package main

import "fmt"

func main() {
	var (
		name    string
		age     int
		married bool
	)
	fmt.Println("请输入姓名,年龄,是否已婚")
    //可以接收多个参数,用户输入参数默认使用空格分割输入设备传入的参数,遇到回车换行符就结束接收参数
    result, err := fmt.Scanln(&name, &age, &married)
	fmt.Println(result)
	fmt.Println(err)
	fmt.Println(name, age, married)
}

 4、func Scanf(format string, a ...interface{}) (n int, err error):

Scanf扫描从标准输入读取文本,将连续的空格分隔值存储到由格式确定的连续参数中,它返回成功扫描的项目数。如果这小于参数的数量,则err将报告错误原因。输入中的换行符必须与格式中的换行符匹配。例如:

package main

import "fmt"

func main() {
	var (
		name    string
		age     int
		married bool
	)
	fmt.Println("请输入姓名,年龄,是否已婚")
    //可以接收多个参数,用户输入参数默认使用空格分割输入设备传入的参数,遇到回车换行符就结束接收参数;还可以格式化输入的数据类型
	result, err := fmt.Scanf("%s %d \n %t", &name, &age, &married)
	fmt.Println(result)
	fmt.Println(err)
	fmt.Println(name, age, married)
}

 5、输入byte类型的数据:byte 类型是 uint8 的别名,代表了 ASCII 码的一个字符,因此在标准输入byte类型的变量时必须接受的是一个数字。例如:

package main

import "fmt"

func main() {
	var input byte
    fmt.Println("请输入一个字母:")
	result, err := fmt.Scan(&input)
	if err != nil {  //"nil"在这里表示空,可以简单的看成其它语言中的null
		fmt.Println("err:", err)
	}
	fmt.Println(result)
	fmt.Println(input)
}

 如果一定要输入字符类型,可以使用Scanf来进行输入:

package main

import "fmt"

func main() {
	var input byte
    fmt.Println("请输入一个字母:")
	result, err := fmt.Scanf("%c", &input)  //"%c"表示将指定数据转换成ascII码中的字符,将ascII码中的字符转换成对应的数据。
	if err != nil {
		fmt.Println("err:", err)
	}
	fmt.Println(result)
	fmt.Println(input)
}

 6、func Sscan(str string, a ...interface{}) (n int, err error):

参数含义
str string此参数表示将要扫描的指定文本。
a …interface{}此参数接收每个文本。

例如:

package main

import "fmt"

func main() {
    //从指定字符串中读取内容
	var (
		name string
		age  int
	)
	fmt.Sscan("zhangsan 18", &name, &age)
	fmt.Println(name, age)
}

7、 func Sscanf(str string, format string, a ...interface{}) (n int, err error):

参数含义
str string此参数表示将要扫描的指定文本。
format string用于指定字符串的每个元素,此参数是不同的格式类型。
a …interface{}此参数接收字符串的每个元素。

例如:

package main

import "fmt"

func main() {
    //从指定字符串中按照格式读取内容
    var (
		name string
		age  int
	)
    result, err := fmt.Sscanf("my name is zhangsan age 18", "my name is %s age %d", &name, &age)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
	fmt.Println(name, age)
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++程序用codeblocks集成开发环境生成的exe文件无法运行情况的解决

C程序用codeblocks集成开发环境生成的exe文件无法运行情况的解决 一般是因为你使用是自带mimgw的Code::Blocks版本&#xff0c;对#include<iostream>支持不完善造成的。 测试代码如下&#xff1a; #include <iostream> using namespace std;int main() {cout <…

测试开发 | 通用 api 封装实战,带你深入理解 PO

image1080434 66.5 KB 在普通的接口自动化测试中&#xff0c;如果接口的参数&#xff0c;比如 url&#xff0c;headers等传参改变&#xff0c;或者测试用例的逻辑、断言改变&#xff0c;那么整个测试代码都需要改变。apiobject设计模式借鉴了pageobject的设计模式&#xff0c;可…

3. PyCharm、PyQt5、PyQt5-tools的下载安装、基于PyCharm开发PyQt5

1、 PyCharm的下载安装 为什么选择PyCharm&#xff1f;而不用QtCreator&#xff0c;很明显&#xff0c;QtCreator基于C/QT开发时确实很不错&#xff0c;但是基于Python/QT开发时就显得比较鸡肋了&#xff0c;代码的智能提示&#xff0c;高亮等都没有。。而PyCharm就比较牛逼了…

【GD32F427开发板试用】位带操作实现多线程下的跑马灯

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;SmallWhite 一、位带操作 作用&#xff1a;对某一位或者几个连续的位进行操作 前言 我们在使用GD32等单片机时使用到的固件库编程&#xff…

int 和 Integer 有什么区别?为什么要有包装类?

基本数据类型 在 Java 中&#xff0c;一共有 8 种基本类型&#xff08;primitive type&#xff09;&#xff0c;其中有 4 种整型、2 种浮点类型、1 种用于表示 Unicode 编码的字符类型 char 和 1 种用于表示真假值的 boolean 类型。 4 种整型&#xff1a;int、short、long、by…

Godot实现蝴蝶飞舞Shader

前言 我一直在探索在游戏UI中实现特效的方法&#xff0c;如LOL&#xff0c;王者荣耀那种华丽的UI特效。 经过总结有一些方法 1、AE做特效渲染成序列帧供游戏引擎播放 优点&#xff1a;节省资源&#xff0c;适合定制特殊需求 缺点&#xff1a;太大占地方&#xff0c;不好修改…

【H5小游戏】-使用js复刻经典小游戏【接鸡蛋】,快来帮助鸡妈妈找回蛋宝宝吧

接鸡蛋游戏需求&#x1f447;核心玩法&#x1f447;&#x1f447;界面原型&#x1f447;&#x1f447;成品演示&#x1f447;1.游戏演示2.暂停演示游戏开发1.游戏素材准备2.代码实现1.创建index.html页面复刻经典小游戏【接鸡蛋】&#xff0c;快来帮助鸡妈妈找回它的蛋宝宝吧 …

用友BIP与旺店通·企业奇门对接集成采购订单列表查询=>创建采购单(采购订单=>采购单)

用友BIP与旺店通企业奇门对接集成采购订单列表查询>创建采购单(采购订单>采购单-p)来源系统:用友BIP用友BIP助力行业龙头企业、产业链核心企业以及平台型企业建设产业互联网运营平台&#xff0c;通过运营、管理、协同配置和共享资源&#xff0c;实现产业链上下游连接与协…

基于 CartPole-v0 环境的强化学习算法实现(附完整代码)

1.1 CartPole-v0Cart Pole 在 OpenAI 的 gym 模拟器里面是相对比较简单的一个游戏。游戏里面有一个小车&#xff0c;上有 一根杆子。小车需要左右移动来保持杆子竖直。如果杆子倾斜的角度大于 15&#xff0c;那么游戏结束。小车也不 能移动出一个范围&#xff08;中间到两边各 …

03 利用栈进行中缀表达式计算

运算符优先级 ​​​​ 栈内运算符加减乘除取模优先级比栈外优先级大1&#xff0c;例如当23-5时我们往往从左到右计算&#xff0c;即先算再算-&#xff0c;使用中缀表达式两个栈计算就是栈外-优先级低于栈顶&#xff0c;故会弹出运算符和两个操作数进行计算。 中缀表达式计算…

Redis应用技术(3)List和Set在Feed流中的选择

在数据推送的时候,我们使用Feed流 Feed流有三种推送数据的方式(以微博订阅为例) 1.推模式(Push) 将数据在发出后直接推到每个收件箱中.这样会造成发送方的内存占用很大 2.拉模式 用户每次登录后主动的将数据从收件箱中拉去到,会造成用户的负载增加(如果关注的人很多,甚至会导…

SpringCloud——config远程连接github 踩坑

说明 我们现在使用spring cloud config 远程连接github会存在网络跟不上问题&#xff0c;以及本地git密钥问题。 1.github更改了密钥策略原来生成的rsa会导致报错&#xff0c;需要使用命令重新生成ed25519密钥2.配置需要按照上述配置 force-pull: true #这个参数不加可能会有…

Linux系统的启动与关闭

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

vue-循环引用感想

vue-循环引用感想开场-什么是循环引用探讨-怎么用后话如果我们要在主组件中传方法到子组件呢普通的porps传参依赖注入开场-什么是循环引用 刚开始看着这个官方文档上的循环引用十分的不解&#xff0c;意思是什么呢&#xff1f;看着官网的意思&#xff0c;大概举了个文件管理器…

Exceeded limit on max bytes to buffer : 262144

springboot版本 2.7.3springcloud版本 2021.0.3POST请求的body是1M多&#xff0c;请求网关提示报错。org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144at org.springframework.core.io.buffer.LimitedDataBuffer…

使用 Burpsuite 测试的常用操作(一)

大家好啊&#xff0c;我是大田。今天分享一下 Burpsuite 在工作中常用操作&#xff0c;本文先说说其中两个操作。一、了解一下 Burpsuite 做什么1、Burpsuite 是一个黑客工具、安全测试工具、半自动化抓包、篡改信息。2、他能做&#xff1a;代理工具 Proxy 、爬虫 Spider、暴力…

python与excel

一、安装anaconda(阿里云镜像库) pip config list -v#pip在哪里寻找pip.conf文件 阿里云镜像&#xff1a; 1、安装完成&#xff0c;命令行输入&#xff1a;conda config生成.condarc文件&#xff08;运行期配置文件&#xff09; 2、如果原本的源中的源地址是 https&#xff0…

手撕Pytorch源码#2.Dataset类 part2

写在前面手撕Pytorch源码系列目的&#xff1a;通过手撕源码复习了解高级python语法熟悉对pytorch框架的掌握在每一类完成源码分析后&#xff0c;会与常规深度学习训练脚本进行对照本系列预计先手撕python层源码&#xff0c;再进一步手撕c源码版本信息python&#xff1a;3.6.13p…

十四.文件操作

目录 一.为什么使用文件 二.什么是文件 1.程序文件和数据文件 2.文件名 三.文件的打开和关闭 1.文件指针 2.fopen函数和fclose函数 四.文件的顺序读写 1.顺序读写函数一览表 2.主要输入输出函数介绍 &#xff08;1&#xff09;字符输出函数futc &#xff08;2&…

Python采集*瓣电影影评并实现可视化分析

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 环境使用: Python 3.8 解释器 Pycharm 编辑器 模块使用 import parsel >>> pip install parsel import requests >>> pip install requests import csv 安装python第三方…