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

【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.xdnf.cn/news/12523.html

相关文章:

  • ai流式文字返回前端和php的处理办法
  • Mac下Android Studio扫描根目录卡死问题记录
  • 从0开始学习R语言--Day18--分类变量关联性检验
  • python打卡day46@浙大疏锦行
  • Charles 全流程指南:安装、设置、抓包与注意事项
  • PDF 转 Markdown
  • 【JVM】Java虚拟机(一)——内存结构
  • SSH实现服务器之间免密登录
  • python 爬虫工具 mitmproxy, 几问几答,记录一下
  • 关于华为仓颉编程语言
  • 从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
  • [大A量化专栏] 夏普比率
  • 动力电池点焊机:驱动电池焊接高效与可靠的核心力量|比斯特自动化
  • 【ubuntu】虚拟机安装配置,sh脚本自动化,包含 apt+时间同步+docker+mysql+redis+pgsql
  • 如何理解OSI七层模型和TCP/IP四层模型?HTTP作为如何保存用户状态?多服务器节点下 Session方案怎么做
  • 大模型低秩微调技术 LoRA 深度解析与实践
  • MySQL全文索引
  • pg数据库表里面id值,使用sql语句赋值,唯一性
  • 小知识点一:无刷电机
  • rocketmq延迟消息的底层原理浅析
  • 多航态无人艇航态变换姿态控制系统设计与实现_可复现,有问题请联系博主
  • HZOJ新手村前段时间的刷题的笔记
  • 国内软件源镜像站一览表(2025年状态更新)
  • 使用Python做bootloader下载程序
  • Linux系统删除文件后的恢复方法
  • 1.2 fetch详解
  • 【高等数学】函数项级数
  • Langchain构建聊天机器人
  • 大模型微调(5):PEFT 微调 Qwen 大模型
  • STL优先级队列的比较函数与大堆小堆的关系