Golang格式化动词说明

在Golang中使用格式化动词时有些困惑,想请教几个问题:

  1. %v、%+v和%#v这三种通用格式有什么区别?在实际开发中应该如何选择?
  2. 对于整数类型,%d和%b分别输出什么格式?什么时候用%b比较合适?
  3. 字符串格式化中%q和%s的主要区别是什么?为什么有时候会看到字符串被加上引号?
  4. 浮点数格式化%f和%g在什么场景下使用?如何控制小数位数?
  5. 结构体类型使用%+v输出时,字段名会显示出来吗?
2 回复

Golang格式化动词用于格式化输出,常见的有:

  • %v:默认格式
  • %+v:显示结构体字段名
  • %#v:Go语法表示
  • %T:变量类型
  • %d:十进制整数
  • %s:字符串
  • %f:浮点数

用于fmt.PrintfSprintf等函数。

更多关于Golang格式化动词说明的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Golang 的格式化动词用于 fmt 包中的函数(如 PrintfSprintf 等),用于控制数据的输出格式。以下是常用动词及其说明:

通用动词

  • %v:默认格式,适用于任何类型。
  • %+v:类似 %v,但结构体字段会显示名称。
  • %#v:Go 语法表示的值(例如,字符串带引号)。
  • %T:值的类型。
  • %%:字面百分号。

布尔值

  • %t:输出 truefalse

整数

  • %b:二进制。
  • %d:十进制。
  • %o:八进制。
  • %x / %X:十六进制(小写/大写)。
  • %c:对应 Unicode 码点的字符。
  • %U:Unicode 格式(如 U+1234)。

浮点数与复数

  • %f / %F:十进制浮点数。
  • %e / %E:科学计数法(小写 e/大写 E)。
  • %g / %G:根据情况选择 %f%e(紧凑格式)。
  • %x / %X:十六进制浮点数。

字符串与字节切片

  • %s:直接输出字符串或字节切片。
  • %q:带引号的字符串(转义特殊字符)。
  • %x / %X:十六进制(小写/大写)。

指针

  • %p:指针地址(十六进制)。

宽度与精度

可在动词前加数字控制格式:

  • %5d:最小宽度 5(右对齐)。
  • %-5d:左对齐。
  • %05d:补零至宽度 5。
  • %.2f:浮点数保留 2 位小数。
  • %5.2f:宽度 5,精度 2。

示例代码

package main

import "fmt"

func main() {
    n := 42
    s := "hello"
    f := 3.14159
    
    fmt.Printf("整数:%d,字符串:%s,浮点数:%.2f\n", n, s, f)
    fmt.Printf("类型:%T,十六进制:%x\n", n, n)
    fmt.Printf("带字段名的结构体:%+v\n", struct{ Name string }{Name: "Go"})
}

输出:

整数:42,字符串:hello,浮点数:3.14
类型:int,十六进制:2a
带字段名的结构体:{Name:Go}

这些动词可灵活组合,满足不同格式化需求。

回到顶部