在 Go语言 开发中,fmt 包是最常用的格式化输入输出工具之一。很多初学者在使用 fmt.Printf 等函数时,常常对“宽度”、“对齐”、“填充”等概念感到困惑。本文将围绕 fmt包之格式化的宽度自适应 这一主题,手把手教你如何灵活控制输出格式,让打印结果更美观、更专业。
在 fmt 包中,“宽度”指的是输出字段所占的最小字符数。例如,如果你指定宽度为 10,那么无论实际内容多短,输出都会至少占据 10 个字符的位置(不足部分用空格或其他字符填充)。
你可以通过在格式动词前加上数字来指定固定宽度:
fmt.Printf("%-10s %5d\n", "Name", 25)// 输出:Name 25 其中:
%-10s:左对齐,宽度为 10 的字符串%5d:右对齐(默认),宽度为 5 的整数* 动态控制宽度有时候,你并不知道需要多宽,或者希望根据变量动态调整宽度。这时可以使用 * 来实现宽度自适应。
语法如下:
fmt.Printf("%*s", width, value) 其中 width 是一个整数变量,表示你想要的宽度。
package mainimport "fmt"func main() { names := []string{"Alice", "Bob", "Charlie"} ages := []int{30, 25, 35} // 先计算最长名字的长度,作为宽度 maxWidth := 0 for _, name := range names { if len(name) > maxWidth { maxWidth = len(name) } } // 使用 * 动态设置宽度 for i := range names { fmt.Printf("%*s : %d 岁\n", -maxWidth, names[i], ages[i]) }} 运行结果:
Alice : 30 岁Bob : 25 岁Charlie : 35 岁 注意:我们在 %*s 前加了负号(-%*s),表示左对齐。如果不加负号,默认是右对齐。
你还可以同时控制宽度和精度。例如,对浮点数进行格式化:
width := 10precision := 2value := 3.14159fmt.Printf("%*.*f\n", width, precision, value)// 输出: 3.14 (总宽度10,小数点后2位) 通过本文,你已经掌握了 Go语言 中 fmt 包的宽度自适应技巧。关键点包括:
%10s)* 实现动态宽度(如 %*s)%-10s 或 -%*s)%*.*f)这些技巧在打印日志、生成报表、调试输出等场景中非常实用。掌握它们,能让你的 Go语言 fmt包 格式化输出 更加专业和灵活。
希望这篇教程对你有帮助!如果你正在学习 Go语言,不妨动手试试上面的代码,加深理解。
本文由主机测评网于2025-12-22发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251211666.html