Skip to content

golang 语言中,常用的 fmt 方法有哪些?

在 Go 语言中,fmt 包是处理格式化输入输出的核心库。以下是常用方法分类说明:

一、标准输出方法

go
// 1. 直接输出
fmt.Print("Hello")       // 不换行输出
fmt.Println("World")     // 输出后自动换行
fmt.Printf("Hi %s", "Bob") // 格式化输出

二、字符串生成方法

go
// 2. 生成格式化字符串
s1 := fmt.Sprint(10)             // "10"
s2 := fmt.Sprintf("%04d", 25)    // "0025"
s3 := fmt.Sprintln(3.14)         // "3.14\n"

三、流式输出方法

go
// 3. 向 io.Writer 写入
file, _ := os.Create("log.txt")
fmt.Fprint(file, "写入文件")      // 写入到文件
fmt.Fprintf(os.Stderr, "错误: %v", err) // 输出到标准错误

四、错误格式化

go
// 4. 创建带格式的错误
err := fmt.Errorf("验证失败: 数值 %d 超出范围", 100)

五、输入扫描方法

go
// 5. 输入扫描示例
var name string
fmt.Scan(&name)                  // 从标准输入读取

var id int
fmt.Sscanf("ID:123", "ID:%d", &id) // 从字符串解析

六、格式化占位符速查

占位符说明示例
%v默认格式fmt.Printf("%v", time.Now())2025-03-29 14:15:16
%+v结构体字段名%+v{Name:"Alice", Age:25}
%#vGo 语法表示%#v[]int{1, 2}
%T类型信息fmt.Printf("%T", 5)int
%q带引号字符串fmt.Printf("%q", "go")"go"

七、高级用法示例

go
// 表格对齐输出
fmt.Printf("%-15s | %6d\n", "iPhone", 1500)  // 左对齐字符串,右对齐数字
// 输出:iPhone         |   1500

// 科学计数法
fmt.Printf("%e", 123456789.0)  // 1.234568e+08

// 指针地址
ptr := &struct{}{}
fmt.Printf("%p", ptr)  // 0x1040a120

最佳实践建议

  1. 性能敏感场景:优先使用 fmt.Sprint 替代字符串拼接
  2. 调试输出:使用 %+v 打印结构体更直观
  3. 跨平台开发:注意 \n 在不同系统的换行处理
  4. 并发安全:多协程操作时推荐使用 fmt.Fprintf 配合 sync.Mutex

注意:Go 1.18+ 新增了 fmt.Appendf 用于高效追加到字节切片,适合高性能日志场景。