当前位置: 首页 > 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"
    

 

相关文章:

  • 保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
  • MySQL体系架构解析(二):MySQL目录与启动配置全解析
  • 命令行以TLS/SSL显式加密方式访问FTP服务器
  • for AC500 PLCs 3ADR025003M9903的安全说明
  • 【Algo】常见组合类数列
  • dify官方离线安装打包插件脚本,改造成ubuntu或者debain系统可用
  • 使用vtk8.2.0加载dicom图像
  • 离散傅里叶级数(DFS)的用途
  • 深入了解JavaScript当中如何确定值的类型
  • 几何引擎对比:OpenCasCade、ACIS、Parasolid和CGM
  • 讲解:Java I/O 流体系,并举例每个类的使用
  • 一站式万能邮箱:如何实现多平台邮件管理?
  • 使用绑定参数以防止SQL注入攻击
  • SpringBoot自动配置原理深度解析
  • Flutter:下拉框选择
  • 【Linux 学习计划】-- 进程程序替换
  • 硅基计划2.0 学习总结 陆 抽象类与接口
  • JavaWeb笔记
  • MySQL查询语句
  • pikachu靶场通关笔记17 CSRF关卡03-CSRF(Token)
  • 网站做的自适应体验差/品牌策划是做什么的
  • 推荐做木工的视频网站/深圳seo技术
  • jtbc网站内容管理系统/微商软文推广平台
  • 软件开发外包公司靠谱吗/肇庆seo按天计费
  • 营销网站建设流程/奶茶店推广软文500字
  • 电商网站定制/什么是竞价推广