[go语言]输入输出

目录

知识结构

输入

1.Scan

​编辑

2.Scanf

3.Scanln

[4.os.Stdin --标准输入,从键盘输入](#4.os.Stdin --标准输入,从键盘输入)

输出

1.Print

2.Printf

3.Println


知识结构

输入

为了展示集中输入的区别,将直接进行代码演示。

三者区别的结论:Scanf格式化输入;Scanln碰到换行符就退出了;

1.Scan

scan相对于scanln就没有回车键的限制,按回车,只要你的内容没有输入完毕,就会等你输入完:

Go 复制代码
package main
import "fmt"	

    func main(){
    var name string
	var passwd string
	fmt.Println("请输入用户名和密码:")
	fmt.Scan(&name, &passwd)
	fmt.Println(name, passwd)
	fmt.Println("请输入用户名:")
	fmt.Scan(&name) //&取地址符
	fmt.Println("请输入密码:")
	fmt.Scan(&passwd)
	fmt.Println(name, passwd)
}

2.Scanf

会进行格式化输入:

Go 复制代码
package main

import "fmt"

func main() {
	var name string
	var passwd string
	fmt.Println("请输入用户名和密码:")
	fmt.Scanf("a=%s b=%s", &name, &passwd)                //格式化输入
	fmt.Printf("name is %s,passwd is %s\n", name, passwd) //格式化输出
}

使用Scanf的时候要按照指定的格式输入才可以正确输出:

3.Scanln

Go 复制代码
package main

import "fmt"

func main() {
	var name string
	var passwd string
	fmt.Scanln(&name, &passwd) //碰到换行符就退出了
	fmt.Println("name is", name, "passwd is", passwd)
}

什么意思呢?就是再使用Scanln进行输入时,如果你敲回车了,就会判定你已经输入完毕,就会出现上面的错误结果。避免这种错误可以使用空格进行隔开:

综上,scan是最常用的输入命令。

4.os.Stdin --标准输入,从键盘输入

使用bufio包中的os.Stdin也可以进行标准输入:

Go 复制代码
package main

import (
	"bufio"
	"fmt"
	"os"
)
func main() {
	//窗机哪一个从键盘输入的对象   os.Stdin --标准输入,从键盘输入
	reader := bufio.NewReader(os.Stdin)
	content, e := reader.ReadString('\n')
	//判断e不为空,表示有错误产生
	if e != nil {
		fmt.Println("产生错误", e)
	} else {
		fmt.Println("获取到的内容:", content)
	}
}

这段代码中,有两个返回值:content和e,用content接收从键盘输入的内容,e用来判断是否产生错误,如果对e没有什么操作,可以用下划线取代;

e可以判断代码执行是否产生错误:通过判断e是否等于nil来判断,代码执行正确时,e=nil。

输出

三者的重要区别是:Printf可以格式化输出,需要自己加换行符\n;Println输出会自动加换行符,不能格式化输出;Print不会自动添加换行符和分隔符。

举例演示。

1.Print

Go 复制代码
package main
import "fmt"
func main(){
    var name string
    var passwd string
    fmt.Println("请输入用户名和密码:")
	fmt.Scanf("a=%s b=%s", &name, &passwd) //格式化输入
	fmt.Print(name, passwd)
}

这里的输出结果就是:

可以看到,这里的"root"与"123"之间是不会自动出现间隔符的,这就是Print的特点。

2.Printf

Printf在上面输入时也有出现,正如Scanf支持格式化输入一样,Printf支持格式化输出,使用Printf可以让结果按照你想要输出的形式展现。这里也不再详述,上面有例子

3.Println

在介绍输入符的时候使用的基本都是Println,它的特点就是输出之后会自动换行。这里就不再详述。

今天的内容就介绍到这里,如果有问题欢迎留言。

相关推荐
开longlong了吗?24 分钟前
Luan Takeaway——大模型驱动的智能外卖管理系统( Spring Cloud、Langchain4j )
后端·spring·spring cloud·langchain
品克缤40 分钟前
Trading-Analysis:基于“规则+LLM”的行情分析终端(兼谈 Vibe Coding 实战感)
前端·后端·node.js·vue·express·ai编程·llama
流水迢迢lst1 小时前
靶场练习day15--php反序列化
开发语言·php
开longlong了吗?1 小时前
Luan Takeaway System:基于Spring Boot + Spring Cloud的外卖业务系统
spring boot·后端·spring cloud
fengci.1 小时前
ctfshow(web入门)279-286
java·开发语言·学习
TON_G-T1 小时前
javascript中 Iframe 处理多端通信、鉴权
开发语言·前端·javascript
周淳APP1 小时前
【JS之闭包防抖节流,this指向,原型&原型链,数据类型,深浅拷贝】简单梳理啦!
开发语言·前端·javascript·ecmascript
ok_hahaha1 小时前
java从头开始-苍穹外卖day05-Redis及店铺营业状态设置
java·开发语言·redis
2501_933329551 小时前
舆情监测系统的技术演进:从数据采集到AI中台,Infoseek如何实现“监测+处置”一体化
开发语言·人工智能·自然语言处理·系统架构
dgvri2 小时前
Windows上安装Go并配置环境变量(图文步骤)
开发语言·windows·golang