当前位置:网站首页>编程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 还有一个区别是 前者不带缓冲区,后者带缓冲区,这就可能导致输出结果可能与预期结果顺序不一致。但这个特性其他语言不一定满足,所以不做介绍。
边栏推荐
- 力扣:62.不同路径
- 4.2 Declarative Transaction Concept
- Handling List
- JS basics - forced type conversion (error-prone, self-use)
- MySQL log articles, binlog log of MySQL log, detailed explanation of binlog log
- OpenCV获取和设置图像的平均亮度
- LCP 17. 速算机器人
- npm安装依赖报错npm ERR! code ENOTFOUNDnpm ERR! syscall getaddrinfonpm ERR! errno ENOTFOUND
- 7.16 Day22---MYSQL (Dao mode encapsulates JDBC)
- 【问题解决】同一机器上Flask部署TensorRT报错记录
猜你喜欢

【Matlab仿真】:一带电量为q的电荷以速度v运动,求运动电荷产生磁感应强度
![Deploy LVS-DR cluster [experimental]](/img/ad/84e05a6421d668b0b6ba6eeba0c730.jpg)
Deploy LVS-DR cluster [experimental]

(Kettle) pdi-ce-8.2 连接MySQL8.x数据库时驱动问题之终极探讨及解决方法分析

Unity行为树AI分享

嵌入式系统驱动初级【3】——字符设备驱动基础中_IO模型

自己学习爬虫写的基础小函数

关于C#的反射,你真的运用自如嘛?

7.13 Day20----MYSQL

MySQL log articles, binlog log of MySQL log, detailed explanation of binlog log

Code Refactoring: For Unit Testing
随机推荐
npm init [email protected] 构建项目报错SyntaxError: Unexpected token ‘.‘解决办法
自动化测试的成本高效果差,那么自动化测试的意义在哪呢?
LCP 17. Quick Calculation Robot
8.03 Day34---BaseMapper查询语句用法
关于 for in与for of 的差别以及如何使用
8.03 Day34---BaseMapper query statement usage
MySQL数据库(基础)
Embedded system driver primary [3] - _IO model in character device driver foundation
PHP实现异步执行程序
力扣:63. 不同路径 II
7.16 Day22---MYSQL(Dao模式封装JDBC)
使用express-jwt第三方包报错TypeError: expressJWT is not a function
力扣:509. 斐波那契数
【论文阅读笔记】无监督行人重识别中的采样策略
4.2 声明式事务概念
7.13 Day20----MYSQL
JS代码预编译
力扣:343. 整数拆分
Swoole学习(一)
4.3 Annotation-based declarative transactions and XML-based declarative transactions