十四:fmt常用方法解析 · Golang · 看云
## **格式化输出函数**
fmt包含有格式化I/O函数,类似于C语言的printf和scanf。格式字符串的规则来源于C,但更简单一些
<br>
### [Go 语言 fmt.Sprintf (格式化输出)]()
Printf()、Sprintf()、Fprintf() 函数的区别用法是什么?
都是输出格式化字符串,只是输出到的目标不一样:
1. Printf() 是把格式化字符串输出到标准到标准输出(一般是屏幕,可以重定向)
<br>
2. Printf() 是和标准输出文件(stdout)关联的,Fprintf 则没有这个限制
<br>
3. Sprintf() 是把格式化字符串输出到指定的字符串中,可以用一个变量来接受,然后在打印
<br>
4. Fprintf() 是把格式字符串输出到指定的文件设备中,所以参数比Printf 多一个文件指针*File
主要用于文件操作,Fprintf() 是格式化输出到一个 Stream ,通常是一个文件
<br>
**普通占位符**
| 占位符 | 说明 | 举例 | 输出 |
| --- | --- | --- | --- |
| %v | 相应值的默认格式。 | Printf("%v", people) | {zhangsan}, |
| %+v | 打印结构体时,会添加字段名 | Printf("%+v", people) | {Name:zhangsan} |
| %#v | 相应值的Go语法表示 | Printf("#v", people) | main.Human{Name:"zhangsan"} |
| %T | 相应值的类型的Go语法表示 | Printf("%T", people) | main.Human |
| %% | 字面上的百分号,并非值的占位符 | Printf("%%") | % |
**布尔占位符**
| 占位符 | 说明 | 举例 | 输出 |
| --- | --- | --- | --- |
| %t | true 或 false。 | Printf("%t", true) | true |
**整数占位符**
| 占位符 | 说明 | 举例 | 输出 |
| --- | --- | --- | --- |
| %b | 二进制表示 | Printf("%b", 5) | 101 |
| %c | 相应Unicode码点所表示的字符 | Printf("%c", 0x4E2D) | 中 |
| %d | 十进制表示 | Printf("%d", 0x12) | 18 |
| %o | 八进制表示 | Printf("%d", 10) | 12 |
| %q | 单引号围绕的字符字面值,由Go语法安全地转义 | Printf("%q", 0x4E2D) | '中' |
| %x | 十六进制表示,字母形式为小写 a-f | Printf("%x", 13) | d |
| %X | 十六进制表示,字母形式为大写 A-F | Printf("%x", 13) | D |
| %U | Unicode格式:U+1234,等同于 "U+%04X" | Printf("%U", 0x4E2D) | U+4E2D |
**浮点数和复数的组成部分(实部和虚部)**
| 占位符 | 说明 | 举例 | 输出 |
| --- | --- | --- | --- |
| %b | 无小数部分的,指数为二的幂的科学计数法, | 与 strconv.FormatFloat 的 'b' 转换格式一致。 | 例如 -123456p-78 |