Go 输入输出
Go 输入输出
2023-09-14 09:15:26 时间
fmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。
Print 系列
Print系列函数会将内容输出到系统的标准输出,区别在于Print函数直接输出内容,Printf函数支持格式化输出字符串,Println函数会在输出内容的结尾添加一个换行符。
func Print(a ...interface{}) (n int, err error)
func Printf(format string, a ...interface{}) (n int, err error)
func Println(a ...interface{}) (n int, err error)
func main() {
fmt.Print("在终端打印该信息。")
name := "沙河小王子"
fmt.Printf("我是:%s\n", name)
fmt.Println("在终端打印单独一行显示")
}
在终端打印该信息。我是:沙河小王子
在终端打印单独一行显示
Sprint 系列
Sprint系列函数会把传入的数据生成并返回一个字符串。
func Sprint(a ...interface{}) string
func Sprintf(format string, a ...interface{}) string
func Sprintln(a ...interface{}) string
s1 := fmt.Sprint("沙河小王子")
name := "沙河小王子"
age := 18
s2 := fmt.Sprintf("name:%s,age:%d", name, age)
s3 := fmt.Sprintln("沙河小王子")
fmt.Println(s1, s2, s3)
Scan 系列
Go语言fmt包下有fmt.Scan、fmt.Scanf、fmt.Scanln三个函数,可以在程序运行过程中从标准输入获取用户的输入。
Scan从标准输入扫描文本,读取由空白符分隔的值保存到传递给本函数的参数中,换行符视为空白符。
本函数返回成功扫描的数据个数和遇到的任何错误。如果读取的数据个数比提供的参数少,会返回一个错误报告原因。
func main() {
var (
name string
age int
married bool
)
fmt.Scan(&name, &age, &married)
fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}
Scanf从标准输入扫描文本,根据format参数指定的格式去读取由空白符分隔的值保存到传递给本函数的参数中:
func Scanf(format string, a ...interface{}) (n int, err error)
func main() {
var (
name string
age int
married bool
)
fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married)
fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}
fmt.Scanf不同于fmt.Scan简单的以空格作为输入数据的分隔符,fmt.Scanf为输入数据指定了具体的输入内容格式,只有按照格式输入数据才会被扫描并存入对应变量。
Scanln类似Scan,它在遇到换行时才停止扫描。最后一个数据后面必须有换行或者到达结束位置。
对这句话我持怀疑态度。
func main() {
var (
name string
age int
married bool
)
fmt.Scanln(&name, &age, &married)
fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}
bufio
有时候我们想完整获取输入的内容,而输入的内容可能包含空格,这种情况下可以使用bufio包来实现。示例代码如下:
func bufioDemo() {
reader := bufio.NewReader(os.Stdin) // 从标准输入生成读对象
fmt.Print("请输入内容:")
text, _ := reader.ReadString('\n') // 读到换行
text = strings.TrimSpace(text)
fmt.Printf("%#v\n", text)
}
我的习惯
这边建议:Printfln + Scan 组合。
这边还建议不要建议和哈哈。
go 的字符串拼接跟 Python 是一样简单的。
相关文章
- 延宕执行,妙用无穷,Go lang1.18入门精炼教程,由白丁入鸿儒,Golang中defer关键字延迟调用机制使用EP17
- go语言集成开发工具:GoLand 2022.2.1中文版「免账号登录」
- Go 数据类型篇(五):数组使用入门
- Go 数据结构和算法篇(一):链表
- 【Golang报错】100% 解决 json: cannot unmarshal array into Go value of type model.xxx 问题
- Go语言之闭包篇
- 「Go工具箱」推荐一个非常简单的深拷贝工具:deepcopy
- 「Go工具箱」推荐一个变量调试神器:go-spew
- GO语言开篇-Go语言急速入门(基础知识点)| 青训营笔记
- Go 模块 verifying xxx/go.mod: checksum mismatch 问题处理
- Go-包管理-go get(二)
- Go-包管理-go build(二)
- Go-模板引擎(一)
- Go语言go mod包依赖管理工具使用详解
- Go语言文件锁操作
- 使用 Go 进行 iOS 和 Android 编程详解手机开发
- Go实现短url项目详解编程语言
- 让你成功安装vscode中go的相关插件详解编程语言
- Go从入门到精通(一)go语言初识详解编程语言
- Go-连接Redis-学习go-redis包详解编程语言
- Go语言Ratelimit服务流量限制
- Linux系统下GO语言快速安装指南(linuxgo语言安装)
- 《精灵宝可梦Go》的开发商Niantic正在制作一款变形金刚游戏
- 程序Linux上运行Go语言程序的指南(linux运行go)
- HMD Global推出Nokia Clarity Earbuds和Go Earbuds+新款耳机
- 部署Linux下快速部署Go环境(go环境linux)
- 如何在Linux上安装Go语言?——简单易懂的指南(linux安装go语言)
- 关键字在SQL Server中利用GO关键字实现更优化的操作(sqlserver中go)
- 使用Go语言实现Redis数据库(用go实现redis)
- 请求简单而快速用Go编写的Redis请求测试(用go写的redis)
- Go语言查询Oracle数据库实战实例(go语言查询oracle)
- 踏上oracle编程之路,Go(go oracle编程)
- Go语句让Oracle数据库管理更方便(oracle go语句)