当前位置:网站首页>编程Go:内置打印函数 print、println 和 fmt 包中 fmt.Print、fmt.Println 的区别
编程Go:内置打印函数 print、println 和 fmt 包中 fmt.Print、fmt.Println 的区别
2022-08-04 05:26:00 【focus_lyh】
golang中打印数据我们通常是使用fmt.Println(),但是其实golang中也有内置的Println()方法
- 内置的Println()/Print()函数都是标准错误输出,而fmt.Println()函数是标准输出
- 内置的Println()/Print()函数输出结果可能与预期结果顺序不一致,而fmt.Println()函数输出结果与预期结果完全一致。(这个特性是由标准错误输出和标准输出决定)
- 内置Println()/Print()函数不能接受数组和结构体类型的数据
- 内置Println()/Print()函数对于组合类型的数据输出的结果是参数值的地址,而fmt.Println()函数输出的是字面量
重点说一下标准错误输出和标准输出的区别;
标准错误输出:在Linux中是stderr,在JAVA中是System.err,在Golang中是Print()/Println()
标准输出:在Linux中是stdout,在JAVA中是System.out,在Golang中是fmt.Println()
我们以JAVA中System.err,System.out作为比较,其他语言类似。
引入JDK官方文档的解释System.err,System.out:
out:“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
err:“标准”错误输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。按照惯例,此输出流用于显示错误消息,或者显示那些即使用户输出流(变量 out 的值)已经重定向到通常不被连续监视的某一文件或其他目标,也应该立刻引起用户注意的其他信息。
官方解释是不是很抽象?确实是,大多数人也这样认可的。我用通俗的语言解释一下:
out : 把数据流输出到显示器或其他外设
err : 把数据流输出到显示器或其他外设,但是err数据流一般是错误信息,而前者是正确信息。
其实从字面意思上就能看出,一个是专为输出错误用的,一个是通常输出用的,都是输出流,但按照人们习惯惯例还是分开的好。
System.err,System.out的正确使用:
try {
InputStream input = new FileInputStream("d:\\java\\...");
System.out.println("open a file");
} catch (IOException e) {
System.err.println("open a file failed:");
e.printStackTrace();
}
JAVA中的System.err,System.out 还有一个区别是 前者不带缓冲区,后者带缓冲区,这就可能导致输出结果可能与预期结果顺序不一致。但这个特性其他语言不一定满足,所以不做介绍。
边栏推荐
猜你喜欢
随机推荐
Summary of MySQL database interview questions (2022 latest version)
Unity行为树AI分享
关于let var 和const的区别以及使用
Unity DOTS学习教程汇总
12. Paging plugin
自动化测试的成本高效果差,那么自动化测试的意义在哪呢?
自己学习爬虫写的基础小函数
程序、进程、线程、协程的概念及区别
强制结束进程
Swoole学习(二)
力扣:96.不同的二叉搜索树
JS原型链
7.15 Day21---MySQL----Index
es6 学习记录
EntityComponentSystemSamples学习笔记
嵌入式系统驱动初级【4】——字符设备驱动基础下_并发控制
Unity Visual Effect Graph入门与实践
Linux环境下redis的下载、安装和启动(建议收藏)
实现登录密码混合动态因子,且动态因子隐式
Programming hodgepodge (3)