Go 输入输出

网友投稿 574 2022-11-24

Go 输入输出

Go 输入输出

文章目录

​​Print 系列​​​​Sprint 系列​​​​Scan 系列​​​​bufio​​​​我的习惯​​

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{}) stringfunc Sprintf(format string, a ...interface{}) stringfunc Sprintln(a ...interface{}) string

s1 := fmt.Sprint("沙河小王子")name := "沙河小王子"age := 18s2 := 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 是一样简单的。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:糊涂工具类(hutool)post请求设置body参数为json数据
下一篇:redis 过期策略及内存回收机制解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~