开发者

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

开发者 https://www.devze.com 2025-10-10 10:54 出处:网络 作者: Penge666
目录普通占位符布尔整数浮点数字符串和字节切片切片指针普通占位符 占位符描述举例结果%v默认格式的值fmt.Printf("%v", User{Name: "小明", Age: 18}){小明 18}%+v如果打印的是结构体,额外打印
目录
  • 普通占位符
  • 布尔
  • 整数
  • 浮点数
  • 字符串和字节切片
  • 切片
  • 指针

普通占位符

占位符描述举例结果
%v默认格式的值fmt.Printf("%v", User{Name: "小明", Age: 18}){小明 18}
%+v如果打印的是结构体,额外打印字段名fmt.Printf("%+v", User{Name: "小明", Age: 18}){Name:小明 Age:18}
%#v对应值的 Go 语法表示fmt.Printf("python;%#v", User{Name: "小明", Age: 18})main.User{Name:"小明", Age:18}
%T对应值类型的 Go 语法表示fmt.Printf("%T", User{Name: "小明", Age: 18})main.User
%%非占位符,而是字面上的 %fmt.Printf("%%")%
package main

import (
	"fmt"
)

// 定义一个结构体类型
type User struct {
	Name string
	Age  int
}

func main() {
	u := User{Name: "小明", Age: 18}

	fmt.Println("1. %v(默认格式)")
	fmt.Printf("输出: %v\n\n", u)
	// 输出: {小明 18}

	fmt.Println("2. %+v(结构体带字段名)")
	fmt.Printf编程("输出: %+v\n\n", u)
	// 输出: {Name:小明 Age:18}

	fmt.Println("3. %#v(Go 语法表示)")
	fmt.Printf("输出: %#v\n\n", u)
	// 输出: main.User{Name:"小明", Age:18}

	fmt.Println("4. %T(类型表示)")
	fmt.Printf("输出: %T\n\n", u)
	// 输出: main.User

	fmt.Println("5. %%(百分号字面量)")
	fmt.Printf("输出: 100%% 成功\n")
	// 输出: 100% 成功
}

布尔

占位符描述举例结果
%t对应值 true 或 falsefmt.Printf("%t", false)false

整数

占位符描述举例结果
%b二进制的形式fmt.Printf("%b", 2)10
%c对应的Unicode码位表示的字符fmt.Printf("%c", 65)A
%d十进制的形式fmt.Printf("%d", 10)10
%5d十进制的形式,长度为5,长度不够用空格来补fmt.Printf("%5d", 123)__123,由于空格显示不出来,用下划线表示空格
%o八进制的形式fmt.Printf("%o", 10)12
%O前缀为0o的八进制的形式fmt.Printf("%O", 10)0o12
%q使用 Go 语法安全转义的单引号字符文字fmt.Printf("%q", 65)'A'
%x十六进制的形式,字母部分用小写字母 a-f 表示fmt.Printf("%x", 12)c
%X十六进制的形式,字母部分用大写字母 A-F 表示fmt.Printf("%X", 12)C
%UUnicode 格式fmt.Printf("%U", 15)U+000F

浮点数

占位符描述举例结果
%f打印小数,默认的长度和小数,小数精度为 6 位fmt.Printf("%f", 1.50000000001)1.500000
%5f长度为 5(整数和小数点以及小数加起来的长度),默认小数精度6位,长度不够则用空格来补fmt.Printf("%10f", 0.1)__0.100000,由于空格显示不出来,用下划线表示空格
%.3f默认长度,小数精度为编程 3fmt.Printf("%.3f", 0.1)0.100
%7.3f长度为 7(整数和小数点以及小数加起来的长度),小树精度为 3fmt.Printf("%7.3f", 0.1)__ 0.100,由于空格显示不出来,用下划线表示空格

字符串和字节切片

占位符描述举例结果
%s输出 string 类型或 []byte 类型的字符串形式fmt.Printf("%s, %s", "haha", []byte("haha"))haha, haha
%q加上双引号的字符串fmt.Printf("%q", "haha")"haha"
%x十六进制的形式,字母用小写表示,每个字节两个字符fmt.Printf("%x", "hello")68656c6c6f
%X十六进制的形式,字母用大写表示,每个js字节两个字符fmt.Printf("%X", "hello")68656C6C6F
package main

import (
	"fmt"
)

func main() {
	s := "haha"
	b := []byte("haha")

	fmt.Println("1. %s:输出字符串或 []byte 的字符串表示")
	fmt.Printf("输出: %s, %s\n\n", s, b)
	// 输出: haha, haha

	fmt.Println("2. %q:字符串带双引号")
	fmt.Printf("输出: %q\n\n", s)
	// 输出: "haha"

	fmt.Println("3. %x:十六进制小写(每字节两个字符)")
	fmt.Printf("输出: %x\n\n", "hello")
	// 输出: 68656c6c6f

	fmt.Println("4. %X:十六进制大写(每字节两个字符)")
	fmt.Printf("输出: %X\n\n", "hello")
	// 输出: 68656C6C6F
}

切片

占位符描述举例结果
%p以16进制表示的第0个元素的地址,前缀为0xfmt.Printf("%p", []int{1, 2, 3})0xc000010120

指针

占位符描述举例结果
%p16进制表编程客栈示,前缀为0xfmt.Printf("%p", &User{Name: "小明"})0xc000008078

到此这篇关于Go语言中占位符格式化符号的实现的文章就介绍到这了,更多相关Go 占位符格式化符号内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号