Golang中fmt.Printf的定义与用法解析
Golang中fmt.Printf的定义与用法解析
Todd McLeod 讲课时语速很快。我经常需要暂停来记下他刚才讲的内容(我是视觉学习者,也就是说我必须阅读才能理解)。不知怎地,我漏掉了 fmt.Printf 的含义。
fmt.Printf
3 回复
您可以在此处阅读相关文档:https://golang.org/pkg/fmt/#Printf
简单来说,这是一种输出格式化字符串的方法。在fmt包文档的开头部分,他们讨论了不同的格式化字符串。例如,%d 表示您希望在格式化字符串中插入整数。
对于像 Printf 这样的功能,我能给出的最佳建议就是持续使用它,慢慢地您就会逐渐理解。虽然不是所有的格式化字符串都容易记住,但通过足够的练习,您将记住需要的重要部分。
fmt.Printf 是 Go 语言标准库 fmt 包中的一个格式化输出函数,用于将格式化的数据输出到标准输出(通常是终端)。与 fmt.Print 和 fmt.Println 不同,fmt.Printf 允许你使用格式化动词(format verbs)来控制输出的格式。
函数定义
func Printf(format string, a ...interface{}) (n int, err error)
format:格式化字符串,包含普通文本和格式化动词(如%d、%s等)。a ...interface{}:可变参数,用于替换格式化字符串中的动词。- 返回值:写入的字节数和可能的错误。
常用格式化动词
%v:默认格式的值。%+v:类似%v,但结构体字段会显示字段名。%#v:Go 语法表示的值。%T:值的类型。%d:十进制整数。%s:字符串。%f:浮点数。%t:布尔值。%p:指针地址。
用法示例
package main
import "fmt"
func main() {
name := "Alice"
age := 30
height := 5.7
isStudent := false
// 基本用法
fmt.Printf("Name: %s, Age: %d\n", name, age)
// 浮点数控制小数位数
fmt.Printf("Height: %.1f feet\n", height)
// 布尔值
fmt.Printf("Is student: %t\n", isStudent)
// 类型信息
fmt.Printf("Type of name: %T\n", name)
// 结构体示例
type Person struct {
Name string
Age int
}
p := Person{Name: "Bob", Age: 25}
fmt.Printf("Person: %v\n", p) // 输出: Person: {Bob 25}
fmt.Printf("Person: %+v\n", p) // 输出: Person: {Name:Bob Age:25}
fmt.Printf("Person: %#v\n", p) // 输出: main.Person{Name:"Bob", Age:25}
// 指针地址
fmt.Printf("Address of p: %p\n", &p)
// 宽度和精度控制
fmt.Printf("Age: %4d\n", age) // 输出: Age: 30(宽度4)
fmt.Printf("Height: %05.2f\n", height) // 输出: Height: 05.70(宽度5,精度2,前导0)
}
注意事项
- 格式化动词必须与参数类型匹配,否则会导致运行时错误。
- 可以使用
%来输出字面百分号。 - 对于复杂格式化,可以考虑使用
fmt.Sprintf将结果保存为字符串。
通过掌握 fmt.Printf 的格式化动词,你可以精确控制输出的格式,这在调试和生成用户友好的输出时非常有用。

