Go语言中的格式化占位符的实现示例

 更新时间:2024年10月15日 09:50:47   作者:宋发元  
在Go语言中,fmt包提供了丰富的格式化占位符用于输出不同类型的数据,了解和选择合适的占位符对于确保输出内容的正确性和可读性至关重要,本文就来介绍一下,感兴趣的可以学习

在 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)
%#vGo 语法表示值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 格式化占位符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go集成swagger实现在线接口文档的教程指南

    Go集成swagger实现在线接口文档的教程指南

    wagger是一个用于设计,构建和文档化API的开源框架,在Go语言中,Swagger可以帮助后端开发人员快速创建和定义RESTful API,并提供自动生成接口文档的功能,所以本文给大家介绍了Go集成swagger实现在线接口文档的方法,需要的朋友可以参考下
    2024-11-11
  • Go数据结构之映射map方式

    Go数据结构之映射map方式

    这篇文章主要介绍了Go数据结构之映射map方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • 一文带你了解Golang中类型转换库cast的使用

    一文带你了解Golang中类型转换库cast的使用

    你是否在使用 Go 的过程中因为类型转换的繁琐而苦恼过?你是否觉得 Go 语言中的类型断言可能会 panic 而对自己写的代码有那么一点点不放心?本文就为大家推荐一个用于类型转换的第三方库 cast 绝对是一个值得尝试的选择
    2023-02-02
  • 关于golang test缓存问题

    关于golang test缓存问题

    这篇文章主要介绍了关于golang test缓存问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • Go语言空白表示符_的实例用法

    Go语言空白表示符_的实例用法

    在本篇内容里小编给大家整理的是一篇关于Go语言空白表示符_的实例用法,有兴趣的朋友们可以学习参考下。
    2021-07-07
  • 一文带你全面掌握Go语言中的正则表达式

    一文带你全面掌握Go语言中的正则表达式

    正则表达式是一种强大的模式匹配工具,能够在文本中进行灵活的搜索和替换操作,本文将介绍 Golang 中的正则表达式语法,包括常用的匹配符号、模式修饰符以及示例应用,希望对大家有所帮助
    2023-05-05
  • 深入理解Golang make和new的区别及实现原理

    深入理解Golang make和new的区别及实现原理

    在Go语言中,有两个比较雷同的内置函数,分别是new和make方法,二者都可以用来分配内存,那他们有什么区别呢?下面我们就从底层来分析一下二者的不同。感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助
    2022-10-10
  • Golang errors包快速上手

    Golang errors包快速上手

    errors 包是用于处理错误的标准库, errors 包提供的功能比较简单,使用起来非常方便,下面就来介绍一下,感兴趣的可以了解一下
    2025-05-05
  • go mock模拟接口的实现

    go mock模拟接口的实现

    本文主要介绍了go mock模拟接口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Go压缩位图库roaring安装使用详解

    Go压缩位图库roaring安装使用详解

    这篇文章主要为大家介绍了Go压缩位图库roaring安装使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07

最新评论