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:格式化输出,适合复杂格式需求。
相关推荐
拂晓银砾10 小时前
数据库字段多类型Json值处理
java·后端
gopher951110 小时前
go中的切片
开发语言·golang
lly20240610 小时前
Vue.js 自定义指令
开发语言
用户40993225021211 小时前
PostgreSQL处理SQL居然像做蛋糕?解析到执行的4步里藏着多少查询优化的小心机?
后端·ai编程·trae
csdddn11 小时前
php 8.4.7 更新日志
开发语言·php
代码匠心11 小时前
从零开始学Flink:数据输出的终极指南
java·大数据·后端·flink
掘根11 小时前
【Qt】多线程
java·开发语言·qt
egoist202311 小时前
[linux仓库]图解System V共享内存:从shmget到内存映射的完整指南
linux·开发语言·共享内存·system v
IT_陈寒12 小时前
SpringBoot性能调优实战:5个让接口响应速度提升300%的关键配置
前端·人工智能·后端
兰亭妙微12 小时前
兰亭妙微QT软件开发与UI设计协同:如何避免设计与实现脱节?
开发语言·qt·ui