Golang中fmt.Printf的定义与用法解析

Golang中fmt.Printf的定义与用法解析 Todd McLeod 讲课时语速很快。我经常需要暂停来记下他刚才讲的内容(我是视觉学习者,也就是说我必须阅读才能理解)。不知怎地,我漏掉了 fmt.Printf 的含义。

fmt.Printf
3 回复

好的。我知道了。

更多关于Golang中fmt.Printf的定义与用法解析的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


您可以在此处阅读相关文档:https://golang.org/pkg/fmt/#Printf

简单来说,这是一种输出格式化字符串的方法。在fmt包文档的开头部分,他们讨论了不同的格式化字符串。例如,%d 表示您希望在格式化字符串中插入整数。

对于像 Printf 这样的功能,我能给出的最佳建议就是持续使用它,慢慢地您就会逐渐理解。虽然不是所有的格式化字符串都容易记住,但通过足够的练习,您将记住需要的重要部分。

fmt.Printf 是 Go 语言标准库 fmt 包中的一个格式化输出函数,用于将格式化的数据输出到标准输出(通常是终端)。与 fmt.Printfmt.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 的格式化动词,你可以精确控制输出的格式,这在调试和生成用户友好的输出时非常有用。

回到顶部