Go语言-fmt包中Print、Println与Printf的区别

前言:

Go 语言中的 fmt 包提供了多种输出函数,其中 Print、Println和Printf 是最常用的三个函数。它们在功能和使用上有一些关键区别,以下是详细的对比和分析。

基本功能

Print

Print 函数将参数写入标准输出,不添加任何格式或换行符。多个参数之间会以空格分隔,但不会自动换行。

Go 复制代码
	fmt.Print("Hello", "golang")
	fmt.Print(1, 2, 3)

输出结果:

Println

Println 的功能与 Print 类似,但会在输出结束后自动添加换行符。多个参数之间同样以空格分隔。

Go 复制代码
	fmt.Println("Hello", "golang")
	fmt.Println(1, 2, 3)

打印结果:

Printf

Printf 是格式化输出函数,允许通过占位符指定输出的格式。它不会自动添加空格或换行符,格式完全由用户控制。

Go 复制代码
	fmt.Printf("Name: %v, Age: %v\n", "Alice", 25)
	fmt.Printf("Name: %v, Age: %v", "Bob", 22)

打印结果:

也就是说 Printf 的第一个参数是格式字符串,后续参数会根据占位符替换格式字符串中的对应部分。

占位符

通用占位符
  • %v:默认格式,适用于任意类型(自动推导)。
  • %+v:输出结构体时添加字段名。
  • %#v:输出值的 Go 语法表示(如结构体的完整定义)。
  • %T:输出值的类型(如 intstring)。
  • %%:输出百分号 % 本身。
布尔占位符
  • %t:输出布尔值 truefalse
整数占位符
  • %b:二进制格式。
  • %c:对应的 Unicode 字符。
  • %d:十进制格式。
  • %o:八进制格式。
  • %O:带前缀 0o 的八进制格式(Go 1.13+)。
  • %x:小写十六进制(如 0x1a)。
  • %X:大写十六进制(如 0X1A)。
  • %U:Unicode 格式(如 U+1234)。
浮点数占位符
  • %b:科学计数法(如 123456p-5)。
  • %e:小写科学计数法(如 1.234567e+08)。
  • %E:大写科学计数法(如 1.234567E+08)。
  • %f:十进制浮点数(如 123.456000)。
  • %F:同 %f
  • %g:自动选择 %e%f(根据精度)。
  • %G:自动选择 %E%F(根据精度)。
字符串与字节切片占位符
  • %s:直接输出字符串或字节切片。
  • %q:带引号的字符串(如 "hello"),非 ASCII 字符会转义。
  • %x:小写十六进制(每字节两个字符)。
  • %X:大写十六进制(每字节两个字符)。
指针占位符
  • %p:输出指针地址(如 0x1400012e010),格式为十六进制带 0x 前缀。
宽度与精度控制

占位符可通过以下格式指定宽度和精度:%[宽度][.精度]动词

例如:

  • %5d:输出至少 5 位宽度的整数(右对齐)。
  • %.2f:输出保留 2 位小数的浮点数。
  • %10.3s:输出字符串的前 3 个字符,总宽度为 10(右对齐)。

总结

  • Print:简单输出,无换行,适合紧凑格式。
  • Println:简单输出,自动换行,适合调试和日志。
  • Printf:格式化输出,适合复杂格式需求。
相关推荐
梦想很大很大3 小时前
使用 Go + Gin + Fx 构建工程化后端服务模板(gin-app 实践)
前端·后端·go
毅炼3 小时前
Java 基础常见问题总结(4)
java·后端
无小道4 小时前
Qt——事件简单介绍
开发语言·前端·qt
devmoon4 小时前
在 Paseo 测试网上获取 Coretime:On-demand 与 Bulk 的完整实操指南
开发语言·web3·区块链·测试用例·智能合约·solidity
想用offer打牌4 小时前
MCP (Model Context Protocol) 技术理解 - 第一篇
后端·aigc·mcp
kylezhao20194 小时前
C# 中的 SOLID 五大设计原则
开发语言·c#
千寻girling4 小时前
Koa.js 教程 | 一份不可多得的 Node.js 的 Web 框架 Koa.js 教程
前端·后端·面试
程序员清风4 小时前
北京回长沙了,简单谈谈感受!
java·后端·面试
何中应4 小时前
请求头设置没有生效
java·后端
NPE~4 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化