Go学习笔记 -- fmt常用打印方法及占位符介绍

普通打印

Fprint
接受一个输出流和多个写入值。
拼接字符串并打印,如果前后两个操作值全都不是 string 类型的时候,自动添加空格分割。

函数返回打印的字节数数量和错误信息。

s := ""
buf := bytes.NewBufferString(s)
fmt.Fprint(buf, 1, 2, 3, "一共三个值\n")
fmt.Print(buf)
---------------------------
1 2 3一共三个值

Print
和 Fprint 功能一致,只是默认使用了控制台(os.Stdout)输出。
函数返回打印的字节数数量和错误信息。

fmt.Print("First", "Second", "\n")
----------------------------
FirstSecond

Sprint
使用默认格式拼接字符串,并返回一个新的字符串,如果前后两个操作值全都不是 string 类型的时候,自动添加空格分割。
函数返回新的字符串。

newStr := fmt.Sprint("First", "Second", "\n")
fmt.Print(newStr)
---------------------------
FirstSecond

Append
接收一个字节切片以及多个字符串,并将字符串中的字符添加到切片中。
函数返回一个字节切片。

byteList := []byte{'h', 'e', 'a', 'd', 'e', 'r', ' '}
new_bytes := fmt.Append(byteList, "First", "Second", "\n")
fmt.Print(string(new_bytes))
---------------------------
header FirstSecond

自带换行

Fprintln
接受一个输出流和多个写入值。拼接字符串并打印,操作值之间自动添加空格分割,结束后自动添加换行符
函数返回打印的字节数数量和错误信息。

fmt.Fprintln(os.Stdout, "First", "Second")
-------------------
First Second

Println
和 Fprintln 功能一样,默认使用控制台输出
函数返回打印的字节数数量和错误信息。
Sprintln
使用默认格式拼接字符串,并返回一个新的字符串,操作值之间自动添加空格分割,结束后自动添加换行符。
函数返回新的字符串。
Appendln
接收一个字节切片以及多个操作值,并将操作值中的字符添加到切片中,在添加下一个操作值的字符之前会先添加一个空格,结束后自动添加换行符。
函数返回一个字节切片。

格式化打印

也是比较常用的打印方法,将操作值按照占位符代表的格式进行转换并替换。
Fprintf
根据占位符转换并通过指定输出流输出

fmt.Fprintf(os.Stdout, "string:%s,number:%d", "test", 14)
---------------------
string:test,number:14

Printf
和 Fprintf 功能一样,默认使用控制台输出
Sprintf
根据占位符转换并将结果值返回
Appendf
接收一个字节切片、一个带有占位符的字符串、若干操作值,将操作值按照占位符格式转换后,将其字符添加到切片中。

byteList := []byte{'h', 'e', 'a', 'd', 'e', 'r', ' '}
new_bytes := fmt.Appendf(byteList, "number:%d,string:%s", 1, "test")
fmt.Println(string(new_bytes))
------------------------
header number:1,string:test

占位符

普通占位符

占位符作用
%v使用默认格式显示
%+v可以显示结构体字段名
%#v可以显示结构体信息和字段名
%T显示类型
test := Test{"ttt"}
fmt.Printf("value: %v\n", "First")
fmt.Printf("value: %v\n", 200)
fmt.Printf("value: %+v\n", test)
fmt.Printf("value: %#v\n", test)
fmt.Printf("type:%T", "First")
----------------------------
value: First
value: 200
value: {name:ttt}
value: main.Test{name:"ttt"}
typestring

字符串占位符

占位符作用
%s替换字符串
%10s,%-10s设置宽度为10(右对齐,左对齐)
%010s设置宽度为10,右对齐,左侧补零
%10.2s,%-10.2s设置宽度为10,并截取两位字符(右对齐,左对齐)
%q自动加双引号
fmt.Printf("str1: %s\n", "First")
fmt.Printf("str1: %10s\n", "First")
fmt.Printf("str1: %-10s\n", "First")
fmt.Printf("str1: %010s\n", "First")
fmt.Printf("str1: %10.2s\n", "First")
fmt.Printf("str1: %-10.2s\n", "First")
fmt.Printf("str1: %q\n", "First")
-------------------------
str1: First
str1:      First
str1: First     
str1: 00000First
str1:         Fi
str1:Fi         
str1: "First"

整数占位符

占位符作用
%b显示二进制
%o显示八进制
%d显示十进制
%x,%#x显示十六进制(小写),显示十六进制(小写且显示前缀)
%X,%#X显示十六进制(大写),显示十六进制(大写且显示前缀)
%U,%#U显示Unicode,显示Unicode并在后面显示被单引号包裹的字符
%c显示Unicode键码
fmt.Printf("BINARY: %b\n", 200)
fmt.Printf("OCTAL: %o\n", 200)
fmt.Printf("DECIMAL: %d\n", 200)
fmt.Printf("HEX(lowercase): %x\n", 200)
fmt.Printf("HEX(lowercase): %#x\n", 200)
fmt.Printf("HEX(uppercase): %X\n", 200)
fmt.Printf("HEX(uppercase): %#X\n", 200)
fmt.Printf("UNICODE: %U\n", 100)
fmt.Printf("UNICODE: %#U\n", 100)
fmt.Printf("KEY CODE: %c\n", 0x0064)
---------------------
BINARY: 11001000
OCTAL: 310
DECIMAL: 200
HEX(lowercase): c8
HEX(lowercase): 0xc8
HEX(uppercase): C8
HEX(uppercase): 0XC8
UNICODE: U+0064
UNICODE: U+0064 'd'
KEY CODE: d

浮点数占位符

占位符作用
%e,%.5e使用科学计数法,后者小数点后保留5位
%E,%.5E使用科学计数法,后者小数点后保留5位
%f,%.2f显示浮点数默认保留小数点后了6位,后者保留两位
%g,%.5g以%f,%e中较短的输出宽度自动适配,后者保留5位有效值(小数点后末尾的0不显示)
%G,%.5G以%f,%E中较短的输出宽度自动适配,后者保留5位有效值(小数点后末尾的0不显示)
fmt.Printf("科学计数e: %e\n", 2123000000.123456)
fmt.Printf("科学计数e,小数点后保留5位: %.5e\n", 2123000000.123456)
fmt.Printf("科学计数E: %E\n", 2123000000.123456)
fmt.Printf("科学计数E,小数点后保留5位: %.5E\n", 2123000000.123456)
fmt.Printf("浮点数: %f\n", 2123000000.12345678)
fmt.Printf("小数点后保留两位: %.2f\n", 2000000000.123456)
fmt.Printf("自动适配: %g\n", 200.123456)
fmt.Printf("自动适配,保留有效值: %.5g\n", 200.123456)
fmt.Printf("自动适配,保留有效值: %.5g\n", 200.103456)
fmt.Printf("自动适配,保留有效值: %.5g\n", 2123000000.123456)
fmt.Printf("自动适配,保留有效值: %.5G\n", 2123000000.123456)
-----------------------------
科学计数e: 2.123000e+09
科学计数e,小数点后保留5: 2.12300e+09
科学计数E: 2.123000E+09
科学计数E,小数点后保留5: 2.12300E+09
浮点数: 2123000000.123457
小数点后保留两位: 2000000000.12
自动适配: 200.123456
自动适配,保留有效值: 200.12
自动适配,保留有效值: 200.1
自动适配,保留有效值: 2.123e+09
自动适配,保留有效值: 2.123E+09

其他占位符

占位符作用
%p,%#p指针占位符,后者不显示前缀
%t布尔占位符
test := Test{"ttt"}
fmt.Printf("POINTER: %p\n", &test)
fmt.Printf("POINTER: %#p\n", &test)
fmt.Printf("RESULT: %t\n", true)
fmt.Printf("RESULT: %t\n", false)
----------------------
POINTER: 0xc000062250
POINTER: c000062250
RESULT: true
RESULT: false
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mingvvv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值