Go语言中的格式化输出占位符的用法详解
作者:越千年
在 Go 语言中,格式化输出是一个非常常用的功能,特别是在处理字符串、数字和其他数据类型时,本文将详细介绍 Go 语言中常用的格式化占位符及其用法,希望对大家有所帮助
在 Go 语言中,格式化输出是一个非常常用的功能,特别是在处理字符串、数字和其他数据类型时。Go 提供了丰富的格式化选项,通过占位符来控制输出的格式。本文将详细介绍 Go 语言中常用的格式化占位符及其用法。
基本格式化函数
Go 语言提供了几个内置的格式化函数,这些函数主要位于 fmt
包和 log
包中:
fmt 包
fmt.Printf(format string, a ...interface{})
:格式化输出到标准输出。
fmt.Sprintf(format string, a ...interface{})
:格式化输出到字符串。
fmt.Fprintf(w io.Writer, format string, a ...interface{})
:格式化输出到 io.Writer
。
log 包
log.Printf(format string, v ...interface{})
:格式化输出到日志。
常用的格式化占位符
字符串格式化
占位符 | 描述 | 示例 |
---|---|---|
%s | 格式化字符串 | fmt.Printf("%s", "Hello") |
%q | 格式化字符串,用双引号包围 | fmt.Printf("%q", "Hello") |
数字格式化
整数
占位符 | 描述 | 示例 |
---|---|---|
%d | 十进制整数 | fmt.Printf("%d", 123) |
%b | 二进制整数 | fmt.Printf("%b", 123) |
%o | 八进制整数 | fmt.Printf("%o", 123) |
%x | 十六进制整数(小写字母) | fmt.Printf("%x", 123) |
%X | 十六进制整数(大写字母) | fmt.Printf("%X", 123) |
%c | ASCII 码对应的字符 | fmt.Printf("%c", 65) |
%U | Unicode 码点 | fmt.Printf("%U", 'A') |
浮点数
占位符 | 描述 | 示例 |
---|---|---|
%f | 浮点数 | fmt.Printf("%f", 123.456) |
%e | 科学记数法(小写字母 e) | fmt.Printf("%e", 123.456) |
%E | 科学记数法(大写字母 E) | fmt.Printf("%E", 123.456) |
%g | 根据值的大小选择 %e 或 %f | fmt.Printf("%g", 123.456) |
%G | 根据值的大小选择 %E 或 %f | fmt.Printf("%G", 123.456) |
布尔值
占位符 | 描述 | 示例 |
---|---|---|
%t | 布尔值 | fmt.Printf("%t", true) |
其他类型
占位符 | 描述 | 示例 |
---|---|---|
%p | 指针地址 | fmt.Printf("%p", &value) |
%T | 类型名称 | fmt.Printf("%T", value) |
特殊格式化
占位符 | 描述 | 示例 |
---|---|---|
%v | 格式化任何值,默认格式 | fmt.Printf("%v", "Hello") |
%+v | 格式化任何值,包含结构体字段 | fmt.Printf("%+v", struct{ Name string }{"Alice"}) |
%#v | 格式化任何值,Go 语法格式 | fmt.Printf("%#v", "Hello") |
自定义宽度和精度
占位符 | 描述 | 示例 |
---|---|---|
%wd | 设置最小宽度,不足部分用空格填充 | fmt.Printf("%5d", 123) |
%0wd | 设置最小宽度,不足部分用零填充 | fmt.Printf("%05d", 123) |
%wf | 设置浮点数的小数位数 | fmt.Printf("%.2f", 123.456) |
对齐方式
占位符 | 描述 | 示例 |
---|---|---|
%-w | 左对齐 | fmt.Printf("%-5d", 123) |
%+w | 右对齐(默认) | fmt.Printf("%+5d", 123) |
示例代码
fmt 包示例
package main import ( "fmt" ) func main() { // 字符串格式化 fmt.Printf("String: %s\n", "Hello") fmt.Printf("Quoted String: %q\n", "Hello") // 数字格式化 fmt.Printf("Decimal: %d\n", 123) fmt.Printf("Binary: %b\n", 123) fmt.Printf("Octal: %o\n", 123) fmt.Printf("Hexadecimal (lower): %x\n", 123) fmt.Printf("Hexadecimal (upper): %X\n", 123) fmt.Printf("Character: %c\n", 65) fmt.Printf("Unicode: %U\n", 'A') // 浮点数格式化 fmt.Printf("Float: %f\n", 123.456) fmt.Printf("Scientific (lower): %e\n", 123.456) fmt.Printf("Scientific (upper): %E\n", 123.456) fmt.Printf("General (lower): %g\n", 123.456) fmt.Printf("General (upper): %G\n", 123.456) // 布尔值格式化 fmt.Printf("Boolean: %t\n", true) // 指针地址格式化 var value int = 123 fmt.Printf("Pointer: %p\n", &value) // 类型名称格式化 fmt.Printf("Type: %T\n", value) // 特殊格式化 fmt.Printf("Default Format: %v\n", "Hello") fmt.Printf("Struct Fields: %+v\n", struct{ Name string }{"Alice"}) fmt.Printf("Go Syntax: %#v\n", "Hello") // 自定义宽度和精度 fmt.Printf("Width: %5d\n", 123) fmt.Printf("Zero-Padded Width: %05d\n", 123) fmt.Printf("Precision: %.2f\n", 123.456) // 对齐方式 fmt.Printf("Left-Aligned: %-5d\n", 123) fmt.Printf("Right-Aligned: %+5d\n", 123) }
log 包示例
package main import ( "log" ) func main() { log.Printf("Log Message: %s", "Hello") }
以上就是Go语言中的格式化输出占位符的用法详解的详细内容,更多关于Go格式化输出占位符的资料请关注脚本之家其它相关文章!