沙滩星空的博客沙滩星空的博客

golang语言fmt格式占位符整理

golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。

支持函数

在 Go 语言中,标准包 fmt 有好多格式化的工具函数,函数名末尾通常以 f 结尾,列举如下:

  1. fmt.Printf 格式化字符串并打印到终端(标准输出)。
  2. fmt.Sprintf 格式化字符串并返回。
  3. fmt.Sscanf 从字符串中解析占位符的对应位置数据。
  4. fmt.Fscanf 从 io.Reader 类型中读取数据并解析占位符的对应位置数据,用于读取文件、终端(标准输入)。
  5. fmt.Fprintf 将格式化的字符串数据输出到 io.Writer 类型中,用于输出到文件。
  6. fmt.Errorf 格式化方式创建一个错误类型消息。
type Human struct {
    Name string
}
var people = Human{Name:"zhangsan"}

占位符类别

// 1. 通用占位符
fmt.Printf("%v,%+v,%#v,%T,%%", people)
// {zhangsan},{Name:zhangsan},main.Human{Name:“zhangsan”},main.Human,%

// 2. 布尔占位符
fmt.Printf("%t", true)  // true

// 3. 整数占位符
fmt.Printf("%b", 5)  // 101  二进制表示

fmt.Printf("%c,%q,%c", 0x4E2D, 0x4E2D, 0x82d7)
// 中,'中',苗    Unicode 码转字符.%q加单引号

fmt.Printf("%d,%d,%d", 10, 010, 0x10)
// 10,8,16    十进制表示。三个数据: 10 十进制,010 八进制,0x10 十六进制

fmt.Printf("|%5d|%-5d|%05d|", 1, 1, 1)
// |    1|1    |00001|      %5d:最小宽度为 5,右对齐,左边留白。%-5d:左对齐,右边留白。

fmt.Printf("%o,%#o,%o,%o", 10, 10, 010, 0x10)
// 12,012,10,20   八进制表示. 很多语言将0打头的数字表示八进制。通过 %#o 输出带 0 开头      

fmt.Printf("%x, %#x, %X, %#X", 13, 13, 13, 13)
// d, 0xd, D, 0XD       十六进制表示,%#x 输出带 0x 开头。

fmt.Printf("%U,%#U", 0x82d7)
// U+82D7,U+82D7 '苗'        %U:转化为 Unicode 格式规范。%#U:转化为 Unicode 格式并带上对应的字符。

// 4. 浮点型占位符
fmt.Printf("%f|%.2f|%.2f", 10.2, 10.232, 10.235)
// 10.200000|10.23|10.23

// 5. 字符串与字节切片
fmt.Printf("%s|%s|%q|%x|%X", "老苗", []byte("嘿嘿嘿"), "老苗", "苗", "苗")
// 老苗|嘿嘿嘿|"老苗"|e88b97|E88B97

// 6. 指针.
num := 2
s := []int{1, 2}
fmt.Printf("%p|%p|%#p|%#p", &num, s, &num, s)
// 0xc000018070|0xc000018080|c000018070|c000018080     地址. 使用十六进制表示,%p 带 0x,%#p 不带。

// 7. 获取数据类型
fmt.Printf("%T", data)
// main.Example

// 8. 其他标记
fmt.Printf("%+d|%+d|%+q|%+q", 2, -2, "miao","苗")
// +2|-2|"miao"|"\u82d7"    数值打印正负号,对于 %+q,非 ASCII 编码,则转成 Unicode 编码输出。

fmt.Printf("%#q", "苗")
// `苗`      为字符串添加反引号

fmt.Printf("%05s|%+05d", "a", 1)
// 0000a|+0001       填充0. 总长度为5, 不足5则填充0

fmt.Printf("%.2s", "abc")
// ab     字符串截断

整理 Go 语言中 20 个占位符 https://studygolang.com/articles/35270
Golang fmt格式“占位符” https://blog.csdn.net/weixin_45994575/article/details/122824239
未经允许不得转载:沙滩星空的博客 » golang语言fmt格式占位符整理

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址