在 go 语言中,fmt 包提供了大量的格式化占位符,用于格式化输出不同类型的数据。选择合适的占位符,可以确保输出的内容格式正确、清晰易懂。
常见的占位符:
基本类型
%v:按值的默认格式输出。适用于任何类型。%+v:在%v的基础上,结构体会额外输出字段名。%#v:输出 go 语法表示的值。结构体会输出详细的字段信息和类型。%t:输出值的类型。%%:字面百分号(%本身)。
整数类型
%d:十进制整数。%b:二进制格式。%o:八进制格式。%x:十六进制格式(小写字母)。%x:十六进制格式(大写字母)。%c:相应 unicode 码点的字符。
浮点数和复数
%f:标准浮点数表示(小数部分)。%e:科学计数法表示(小写 e)。%e:科学计数法表示(大写 e)。%g:根据具体情况选择%f或%e表示。
字符串和字节
%s:字符串。%q:带双引号的字符串,安全转义。%x:以十六进制表示字符串或字节切片。%x:以大写十六进制表示字符串或字节切片。
布尔类型
%t:布尔值 (true或false)。
指针
%p:指针的十六进制表示。
如何选择占位符:
选择占位符时,首先需要根据数据类型选择合适的格式化符号,具体情况如下:
输出通用数据类型:
使用 %v 是通用、默认的选择。如果你不确定类型,%v 可以输出所有类型的值。例如:
logx.infof("result: %v", result)
输出结构体:
如果想要查看结构体的详细信息,可以使用 %+v 输出字段名和值,或者使用 %#v 输出 go 语言格式的值。例如:
logx.infof("struct data: %+v", mystruct)
logx.infof("go syntax: %#v", mystruct)
输出字符串:
一般使用 %s 输出字符串;如果需要输出带双引号和转义字符的安全字符串,使用 %q。例如:
logx.infof("user input: %s", input)
logx.infof("escaped string: %q", input)
输出整数:
使用 %d 输出十进制整数,如果需要以二进制或十六进制表示,可以分别使用 %b 和 %x。例如:
logx.infof("user age: %d", age)
logx.infof("memory address in hex: %x", pointer)
输出浮点数:
一般使用 %f 输出浮点数,输出带有小数部分;如果需要科学计数法表示,使用 %e 或 %e。例如:
logx.infof("price: %f", price)
logx.infof("price in scientific notation: %e", price)
输出指针:
如果你需要输出一个指针的值,使用 %p 会显示其十六进制地址。例如:
logx.infof("pointer address: %p", &myvar)
实际案例:
假设我们有如下数据:
taskid := 12345
price := 1234.567
name := "alice"
completed := true
mystruct := struct {
id int
name string
}{
id: 1,
name: "testtask",
}
使用占位符输出:
logx.infof("task id: %d", taskid) // 输出十进制整数
logx.infof("price: %f", price) // 输出浮点数
logx.infof("user: %s", name) // 输出字符串
logx.infof("task completed: %t", completed) // 输出布尔值
logx.infof("task info: %+v", mystruct) // 输出结构体,带字段名和值
占位符一览表:
| 占位符 | 说明 | 示例 |
|---|---|---|
%v | 默认格式 | logx.infof("%v", 42) |
%+v | 结构体字段和值 | logx.infof("%+v", obj) |
%#v | go 语法表示值 | logx.infof("%#v", obj) |
%t | 输出值的类型 | logx.infof("%t", obj) |
%d | 十进制整数 | logx.infof("%d", 123) |
%b | 二进制整数 | logx.infof("%b", 7) |
%x | 十六进制小写 | logx.infof("%x", 255) |
%f | 浮点数 | logx.infof("%f", 3.14) |
%t | 布尔值 | logx.infof("%t", true) |
%p | 指针地址 | logx.infof("%p", ptr) |
%s | 字符串 | logx.infof("%s", "abc") |
%q | 带双引号的字符串 | logx.infof("%q", "abc") |
通过根据数据类型选择正确的占位符,可以确保输出信息的格式化和可读性。
到此这篇关于go语言中的格式化占位符的实现示例的文章就介绍到这了,更多相关go 格式化占位符内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论