GO语言中println和fmt.println()区别
2023-04-18 16:10:28 时间
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 还有一个区别是 前者不带缓冲区,后者带缓冲区,这就可能导致输出结果可能与预期结果顺序不一致。但这个特性其他语言不一定满足,所以不做介绍。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击