当前位置: 首页 > news >正文

【Go语言基础【6】】字符串格式化说明

文章目录

    • 零、格式化常用场景
    • 一、Go 字符串格式化核心概念
    • 二、常用格式化占位符
      • 1. 整数类型
      • 2. 浮点数类型
      • 3. 字符串与布尔类型
      • 4. 指针与通用类型
    • 三、宽度与精度控制
      • 1. 宽度控制
      • 2. 精度控制(浮点数/字符串)

零、格式化常用场景

  • 数值转字符串:使用 %d%f 等,结合宽度和精度控制输出格式。
  • 日志输出:用 %v%+v 快速打印结构体或复杂类型。
  • 国际化字符处理:通过 %c%U 处理 Unicode 字符,注意编码格式(UTF-8/UTF-16)。

 
常见错误说明

  1. 类型不匹配go fmt.Printf("%d", "abc") // 报错:%!d(string=abc)
  2. 参数数量错误go fmt.Printf("%d", 1, 2) // 报错:%!(EXTRA int=2)
  3. 宽度/精度非整数go fmt.Printf("%2.3s", "abc") // 报错:%!(BADPREC)

 

一、Go 字符串格式化核心概念

Go 语言通过 fmt 包实现字符串格式化,核心函数包括:

  • fmt.Printf(format string, a ...any):按指定格式输出到控制台。
  • fmt.Sprintf(format string, a ...any) string:返回格式化后的字符串。
  • fmt.Fprintf(w io.Writer, format string, a ...any):输出到指定写入器(如文件)。

格式化语法
% 开头的占位符,后跟格式标识符(如 %d%s),可附加宽度、精度等修饰符。

 

二、常用格式化占位符

1. 整数类型

占位符说明示例(a = 255输出
%b二进制fmt.Printf("%b", a)11111111
%o八进制fmt.Printf("%o", a)377
%d十进制fmt.Printf("%d", a)255
%x十六进制(小写)fmt.Printf("%x", a)ff
%X十六进制(大写)fmt.Printf("%X", a)FF
%cUnicode 字符(码点转字符)fmt.Printf("%c", 20013)
%UUnicode 格式(带 U+ 前缀)fmt.Printf("%U", '中')U+4E2D

2. 浮点数类型

占位符说明示例(f = 123.456输出
%e科学计数法(小写 e)fmt.Printf("%e", f)1.234560e+02
%E科学计数法(大写 E)fmt.Printf("%E", f)1.234560E+02
%f固定小数位(默认 6 位)fmt.Printf("%f", f)123.456000
%g自动选择紧凑格式fmt.Printf("%g", f)123.456
%G类似 %g(大写 E)fmt.Printf("%G", f)123.456

3. 字符串与布尔类型

占位符说明示例(str = "Go语言"输出
%s原始字符串fmt.Printf("%s", str)Go语言
%q带双引号的转义字符串fmt.Printf("%q", str)"Go语言"
%x十六进制(小写)fmt.Printf("%x", str)476fe8afad
%t布尔值(true/falsefmt.Printf("%t", true)true

4. 指针与通用类型

占位符说明示例(a := 10; ptr := &a输出
%p指针地址(十六进制,带 0xfmt.Printf("%p", ptr)0xc00001a0b8
%v默认格式fmt.Printf("%v", []int{1,2,3}[1 2 3]
%+v带字段名的结构体格式fmt.Printf("%+v", user){Name:laowang Age:33}
%#vGo 语法表示fmt.Printf("%#v", user)main.User{Name:"laowang", Age:33}
%T类型信息fmt.Printf("%T", user)main.User
%%字面量 %fmt.Printf("%%")%

 

三、宽度与精度控制

1. 宽度控制

  • 基本格式%[宽度]s(宽度为整数,默认右对齐,负数为左对齐)。
    fmt.Printf("|%5s|", "ab")   // 右对齐,宽度5 → "|   ab|"
    fmt.Printf("|%-5s|", "ab")  // 左对齐,宽度5 → "|ab   |"
    
  • 补零填充%[宽度]d%0[宽度]d(宽度不足时补零)。
    fmt.Printf("%03d", 5)  // 补零至3位 → "005"
    

2. 精度控制(浮点数/字符串)

  • 浮点数精度%[宽度].[精度]f(精度指小数位数)。
    fmt.Printf("%.2f", 123.456)  // 保留2位小数 → "123.46"
    
  • 字符串截断%.[长度]s(超出长度则截断)。
    fmt.Printf("%.3s", "Hello")  // 截断至3字符 → "Hel"
    

 

http://www.lqws.cn/news/178453.html

相关文章:

  • ruoyi-plus-could 负载均衡 通过 Gateway模块配置负载均衡
  • 负载均衡LB》》HAproxy
  • 解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
  • 电脑同时连接内网和外网的方法,附外网连接局域网的操作设置
  • 前端对WebSocket进行封装,并建立心跳监测
  • 【Redis】分布式锁的介绍与演进之路
  • 以太网原理图设计和PCB设计deepseek
  • RFID推动新能源汽车零部件生产系统管理应用案例
  • 使用SSE解决获取状态不一致问题
  • 使用Python和OpenCV实现图像识别与目标检测
  • 通道注意力
  • Opencv中的addweighted函数
  • Keil调试模式下,排查程序崩溃简述
  • C#实现Stdio通信方式的MCP Server
  • 数据通信 PoE 交换机解决方案
  • 高效Excel合并拆分软件
  • 【人工智能】一些基本概念
  • 惠普HP Deskjet 9600 打印机信息
  • 【递归、搜索与回溯】综合练习(四)
  • JVM虚拟机:内存结构、垃圾回收、性能优化
  • 使用 Mechanical 脚本获取联合反作用力和力矩
  • Linux 服务管理与自启动配置全解析:rc.d、systemctl与service对比
  • 物联网嵌入式开发实训室建设方案探讨(高职物联网应用技术专业实训室建设)
  • 【使用conda】安装pytorch
  • 力扣刷题(第四十九天)
  • 【redis实战篇】第八天
  • 越狱蒸馏-可再生安全基准测试
  • Science Robotics:UCLA 贺曦敏团队综述自主软体机器人
  • 绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
  • AI大模型学习三十三、HeyGem.ai 服务端(ubuntu)docker 安装 /客户端(win)分离部署