fmt包提供格式化输入输出功能,常用函数有Print、Printf、Sprintf等;通过格式化动词如%v、%d、%s控制输出样式,支持宽度、精度设置,并可通过实现Stringer接口自定义类型输出。

Go语言中的
fmt包提供了格式化输入输出功能,是日常开发中最常用的工具之一。它类似于C语言的
printf,但更加安全和直观。掌握
fmt的基本用法,能帮助我们更高效地打印日志、调试程序和处理字符串。
常用输出函数
fmt包提供了多个输出函数,根据使用场景选择合适的方法:
-
fmt.Print / fmt.Println:直接输出内容,
Println
会自动换行 - fmt.Printf:支持格式化字符串,可控制输出样式
- fmt.Sprintf:返回格式化后的字符串,不直接输出
-
fmt.Fprint / Fprintln / Fprintf:向
io.Writer
写入,如文件或网络连接
fmt.Print("Hello")
fmt.Println("World") // 自动换行
fmt.Printf("姓名:%s,年龄:%d\n", "小明", 20)
s := fmt.Sprintf("结果:%v", 100) // s = "结果:100"
格式化动词(verbs)详解
格式化动词决定了变量如何被输出,常见的包括:
- %v:默认格式输出任意值,最常用
- %+v:结构体时显示字段名
- %#v:Go语法格式输出,包含类型信息
- %T:输出值的类型
- %t:布尔值,true 或 false
- %d:十进制整数
- %f:浮点数
- %s:字符串
- %q:带双引号的字符串或字符
- %p:指针地址
type User struct {
Name string
Age int
}
u := User{"Alice", 25}
fmt.Printf("%v\n", u) // {Alice 25}
fmt.Printf("%+v\n", u) // {Name:Alice Age:25}
fmt.Printf("%#v\n", u) // main.User{Name:"Alice", Age:25}
fmt.Printf("%T\n", u) // main.User
宽度、精度与对齐控制
可以通过设置宽度和精度来控制输出格式,常用于表格或对齐场景:
启科网络商城系统由启科网络技术开发团队完全自主开发,使用国内最流行高效的PHP程序语言,并用小巧的MySql作为数据库服务器,并且使用Smarty引擎来分离网站程序与前端设计代码,让建立的网站可以自由制作个性化的页面。 系统使用标签作为数据调用格式,网站前台开发人员只要简单学习系统标签功能和使用方法,将标签设置在制作的HTML模板中进行对网站数据、内容、信息等的调用,即可建设出美观、个性的网站。
立即学习“go语言免费学习笔记(深入)”;
- %8d:右对齐,最小宽度8
- %-8d:左对齐,最小宽度8
- %.2f:保留两位小数
- %8.2f:总宽度8,保留两位小数,右对齐
- %08d:不足位补0,如 00001234
fmt.Printf("|%8d|\n", 123) // | 123|
fmt.Printf("|%-8d|\n", 123) // |123 |
fmt.Printf("|%08d|\n", 123) // |00000123|
fmt.Printf("%.2f\n", 3.14159) // 3.14
fmt.Printf("%8.2f\n", 3.14159) // 3.14
自定义类型实现格式化输出
通过实现
fmt.Stringer接口,可以自定义类型的打印格式:
type Status int
const (
Running Status = iota
Stopped
)
func (s Status) String() string {
return map[Status]string{
Running: "运行中",
Stopped: "已停止",
}[s]
}
fmt.Println(Running) // 输出:运行中
当类型实现了
String()方法后,
fmt在遇到
%v等动词时会自动调用该方法。 基本上就这些。熟练使用
fmt能让你的输出更清晰、调试更方便。关键是记住常用动词和格式控制方式,实际开发中多尝试即可掌握。









