当前位置:网站首页>编程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 还有一个区别是 前者不带缓冲区,后者带缓冲区,这就可能导致输出结果可能与预期结果顺序不一致。但这个特性其他语言不一定满足,所以不做介绍。
边栏推荐
猜你喜欢
代码重构:面向单元测试
Unity表格配置编辑工具
Web Basics and Exercises for C1 Certification - My Study Notes
Cannot read properties of null (reading 'insertBefore')
程序员也应了解的Unity粒子系统
The cost of automated testing is high and the effect is poor, so what is the significance of automated testing?
Canal mysql data synchronization
7.18 Day23 - the markup language
8.03 Day34---BaseMapper query statement usage
C语言 -- 操作符详解
随机推荐
7.16 Day22---MYSQL (Dao mode encapsulates JDBC)
关于事件捕获和事件冒泡的顺序,以及如何处理事件冒泡带来的影响
8.03 Day34---BaseMapper query statement usage
跨域问题的解决
自己学习爬虫写的基础小函数
JNI基本使用
JS深复制对象方法(深拷贝)
力扣:746. 使用最小花费爬楼梯
计算属性的作用及使用?
Unity行为树AI分享
lambda函数用法总结
关于C#的反射,你真的运用自如嘛?
es6 学习记录
4.2 Declarative Transaction Concept
Web Basics and Exercises for C1 Certification - My Study Notes
Can‘t connect to MySQL server on ‘localhost3306‘ (10061) 简洁明了的解决方法
基于C语言的学生信息管理系统_(更新版)_(附源码和安装包)_课程设计_**往事随風**的博客
Sublime Text 3 2021.8.3 个人配置
登录页面js手写
7.13 Day20----MYSQL