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 小时前
Java-82 深入浅出 MySQL 内部架构:服务层、存储引擎与文件系统全覆盖
java·开发语言·数据库·学习·mysql·spring·微服务
惜.己3 小时前
pytest中使用skip跳过某个函数
开发语言·python·测试工具·pytest
姜暮儿3 小时前
C++ 性能优化
开发语言·c++
啊呦.超能力4 小时前
QT开发---多线程编程
开发语言·qt
爷_4 小时前
字节跳动震撼开源Coze平台!手把手教你本地搭建AI智能体开发环境
前端·人工智能·后端
铭哥的编程日记5 小时前
《从C风格到C++风格:内存管理的进化之路》
开发语言·c++
秃了也弱了。5 小时前
reflections:Java非常好用的反射工具包
java·开发语言
Joker—H6 小时前
【Java】Reflection反射(代理模式)
java·开发语言·经验分享·代理模式·idea
阿里巴巴淘系技术团队官网博客6 小时前
面向互联网2C业务的分布式类Manus Java框架
java·开发语言·分布式
笨蛋不要掉眼泪7 小时前
Java测试题(上)
java·开发语言