Go语言教程-占位符及演示代码

Go语言中的格式化输出主要使用fmt包,其中包含多种占位符用于不同类型的数据格式化。以下是常用的占位符及其演示代码:

通用占位符

占位符 说明
%v 值的默认格式表示
%+v 类似%v,但输出结构体时会添加字段名
%#v 值的Go语法表示
%T 值的类型的Go语法表示
%% 百分号

布尔型占位符

占位符 说明
%t true或false

整数型占位符

占位符 说明
%b 二进制表示
%c 对应的Unicode码点所表示的字符
%d 十进制表示
%o 八进制表示
%x 十六进制表示,使用a-f小写
%X 十六进制表示,使用A-F大写
%U Unicode格式:U+1234,等价于"U+%04X"

浮点数与复数占位符

占位符 说明
%b 无小数部分、二进制指数的科学计数法
%e 科学计数法,如-1234.456e+78
%E 科学计数法,如-1234.456E+78
%f 有小数部分但无指数部分
%F 等价于%f
%g 根据情况选择%e或%f
%G 根据情况选择%E或%F

字符串与字节切片占位符

占位符 说明
%s 直接输出字符串或字节切片
%q 双引号括起来的字符串
%x 十六进制,小写字母
%X 十六进制,大写字母

指针占位符

占位符 说明
%p 十六进制表示,前缀0x

宽度与精度控制

可以在占位符中使用宽度和精度控制:

  • %f 默认宽度,默认精度

  • %9f 宽度9,默认精度

  • %.2f 默认宽度,精度2

  • %9.2f 宽度9,精度2

  • %9.f 宽度9,精度0

演示代码

Go 复制代码
package main  

import "fmt"

func main() {
    // 通用占位符演示
    fmt.Printf("通用占位符:\n")
    fmt.Printf("%%v: %v\n", "Hello")
    fmt.Printf("%%+v: %+v\n", struct{ Name string }{Name: "Alice"})
    fmt.Printf("%%#v: %#v\n", "Hello")
    fmt.Printf("%%T: %T\n", "Hello")
    fmt.Printf("%%%%: %%\n")
    
    // 布尔型演示
    fmt.Printf("\n布尔型占位符:\n")
    fmt.Printf("%%t: %t\n", true)
    
    // 整数型演示
    fmt.Printf("\n整数型占位符:\n")
    num := 65
    fmt.Printf("%%b: %b\n", num)  // 二进制
    fmt.Printf("%%c: %c\n", num)  // Unicode字符
    fmt.Printf("%%d: %d\n", num)  // 十进制
    fmt.Printf("%%o: %o\n", num)  // 八进制
    fmt.Printf("%%x: %x\n", num)  // 十六进制小写
    fmt.Printf("%%X: %X\n", num)  // 十六进制大写
    fmt.Printf("%%U: %U\n", num)  // Unicode格式
    
    // 浮点数演示
    fmt.Printf("\n浮点数占位符:\n")
    f := 123.456
    fmt.Printf("%%b: %b\n", f)   // 科学计数法
    fmt.Printf("%%e: %e\n", f)   // 科学计数法小写e
    fmt.Printf("%%E: %E\n", f)   // 科学计数法大写E
    fmt.Printf("%%f: %f\n", f)   // 无指数
    fmt.Printf("%%g: %g\n", f)   // 根据情况选择
    fmt.Printf("%%G: %G\n", f)   // 根据情况选择
    
    // 宽度和精度控制
    fmt.Printf("\n宽度和精度控制:\n")
    fmt.Printf("|%%9.2f|: |%9.2f|\n", f)
    fmt.Printf("|%%.2f|: |%.2f|\n", f)
    fmt.Printf("|%%9.f|: |%9.f|\n", f)
    
    // 字符串演示
    fmt.Printf("\n字符串占位符:\n")
    str := "Hello, 世界"
    fmt.Printf("%%s: %s\n", str)
    fmt.Printf("%%q: %q\n", str)
    fmt.Printf("%%x: %x\n", str)
    fmt.Printf("%%X: %X\n", str)
    
    // 指针演示
    fmt.Printf("\n指针占位符:\n")
    p := &str
    fmt.Printf("%%p: %p\n", p)
}

输出结果:

Go 复制代码
通用占位符:
%v: Hello
%+v: {Name:Alice}
%#v: "Hello"
%T: string
%%: %

布尔型占位符:
%t: true

整数型占位符:
%b: 1000001
%c: A
%d: 65
%o: 101
%x: 41
%X: 41
%U: U+0041

浮点数占位符:
%b: 8687443681197687p-46
%e: 1.234560e+02
%E: 1.234560E+02
%f: 123.456000
%g: 123.456
%G: 123.456

宽度和精度控制:
|%9.2f|: |   123.46|

宽度和精度控制:
|%9.2f|: |   123.46|
宽度和精度控制:
|%9.2f|: |   123.46|
|%9.2f|: |   123.46|
|%.2f|: |123.46|
|%9.f|: |      123|
|%9.f|: |      123|


字符串占位符:
%s: Hello, 世界
%s: Hello, 世界
%q: "Hello, 世界"
%x: 48656c6c6f2c20e4b896e7958c
%q: "Hello, 世界"
%x: 48656c6c6f2c20e4b896e7958c
%x: 48656c6c6f2c20e4b896e7958c
%X: 48656C6C6F2C20E4B896E7958C

指针占位符:
%p: 0xc00009c070
相关推荐
程序员爱钓鱼17 分钟前
Go语言实战案例-简易计算器(加减乘除)
后端
学不会就看22 分钟前
Django--01基本请求与响应流程
后端·python·django
AI+程序员在路上26 分钟前
Qt6中模态与非模态对话框区别
开发语言·c++·qt
nbsaas-boot5 小时前
Java 正则表达式白皮书:语法详解、工程实践与常用表达式库
开发语言·python·mysql
chao_7895 小时前
二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
开发语言·数据结构·python·算法·leetcode
Nejosi_念旧6 小时前
解读 Go 中的 constraints包
后端·golang·go
风无雨6 小时前
GO 启动 简单服务
开发语言·后端·golang
小明的小名叫小明6 小时前
Go从入门到精通(19)-协程(goroutine)与通道(channel)
后端·golang
光影少年6 小时前
从前端转go开发的学习路线
前端·学习·golang
斯普信专业组6 小时前
Go语言包管理完全指南:从基础到最佳实践
开发语言·后端·golang