golang打印输出fmt和log

无拘无束的猪 · · 6455 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

fmt

%v 值的默认格式表示。当输出结构体时,扩展标志(%+v)会添加字段名
%#v 值的Go语法表示
%T 值的类型的Go语法表示
%t 单词true或false
%% 百分号
%p 表示为十六进制,并加上前导的0x
%s 直接输出字符串或者[]byte %q 该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示
%x 每个字节用两字符十六进制数表示(使用a-f)
%X 每个字节用两字符十六进制数表示(使用A-F)
%b 表示为二进制
%c 该值对应的unicode码值
%d 表示为十进制
%o 表示为八进制
%q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
6 %x 表示为十六进制,使用a-f
7 %X 表示为十六进制,使用A-F
8 %U 表示为Unicode格式:U+1234,等价于"U+%04X"
%f: 默认宽度,默认精度
%9f 宽度9,默认精度
%.2f 默认宽度,精度2 %9.2f 宽度9,精度2 %9.f 宽度9,精度0

fmt.Printf("%v")
fmt.Printf("%#v\n",p)
fmt.Printf("%v")
fmt.Printf("%T")
{xu 20}
main.person{name:"liu", age:20}
{name:liu age:20}
main.person

简单print变形:

Print:   输出到控制台,不接受任何格式化操作
Println: 输出到控制台并换行
Printf : 只可以打印出格式化的字符串。只可以直接输出字符串类型的变量(不可以输出别的类型)
Sprintf:格式化并返回一个字符串而不带任何输出
Fprintf:来格式化并输出到 io.Writers 而不是 os.Stdout

func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
Fprintf根据format参数生成格式化的字符串并写入w。返回写入的字节数和遇到的任何错误。
func Sprintf(format string, a ...interface{}) string
Sprintf根据format参数生成格式化的字符串并返回该字符串。
func Fprint(w io.Writer, a ...interface{}) (n int, err error)
Fprint采用默认格式将其参数格式化并写入w。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格。返回写入的字节数和遇到的任何错误。
func Sprint(a ...interface{}) string
Sprint采用默认格式将其参数格式化,串联所有输出生成并返回一个字符串。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格。
func Errorf(format string, a ...interface{}) error
Errorf根据format参数生成格式化字符串并返回一个包含该字符串的错误。

更多实例参考
https://blog.csdn.net/a953713428/article/details/90112521

log

  • 对日志信息进行存储
  • 打印时间
  • 线程安全

关于logger的基本结构,可以参考这个博客:
http://gotaly.blog.51cto.com/8861157/1406905

看logger的结构,除了基本的信息之外,还有许多其他的功能:
http://studygolang.com/articles/3383

具体理解log是线程安全的,可以参考这个博客:
http://blog.csdn.net/paladinosment/article/details/42666147

还有日志的转存打印
创建New对象的时候,通过控制第一个参数,可以直接输出到标准输出上,也可以存到文件中。

如果仅仅想输出到终端,可以直接调用log.XXX方法,不用先生成一个logger对象,再去通过logger对象来调用。在log包中,有一些methods是直接对logger的实现,有一些是直接的库函数,可以直接使用。

http://www.sharejs.com/codes/go/7308

关于单元测试时候的t.logf
这个在内部其实还是使用类似的logs的方法,都是对基本的并行的操作进行了封装之后再处理的,加上了mutex操作,因此在单元测试中也并不推荐直接使用fmt.printf的方法。

参考链接:
https://www.cnblogs.com/Goden/p/4620136.html


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:无拘无束的猪

查看原文:golang打印输出fmt和log

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

6455 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传