📌 fmt 包中的所有 Print 系列函数
✅ 1. 基础输出(写到标准输出 stdout)
这些是最常用的:控制台输出
| 函数 | 自动换行 | 自动空格 | 支持格式化 | 输出位置 |
|---|---|---|---|---|
fmt.Print |
❌ | ❌ | ❌ | 标准输出 |
fmt.Println |
✔️ | ✔️ | ❌ | 标准输出 |
fmt.Printf |
❌ | ❌ | ✔️ | 标准输出 |
✅ 2. 写入 字符串(返回 string,而不是打印)
这些函数不会输出到屏幕,而是返回字符串,非常适合构造日志、模板、HTTP 响应等。
| 函数 | 自动换行 | 自动空格 | 支持格式化 | 返回值 |
|---|---|---|---|---|
fmt.Sprint |
❌ | ❌ | ❌ | string |
fmt.Sprintln |
✔️ | ✔️ | ❌ | string |
fmt.Sprintf |
❌ | ❌ | ✔️ | string |
示例:
go
msg := fmt.Sprintf("id=%d name=%s", 10, "Tom")
✅ 3. 写入 任意 io.Writer(文件、网络连接、缓冲区等)
这是 Print 系列中最强的一组,用于日志系统、文件写入、网络写入。
| 函数 | 自动换行 | 自动空格 | 支持格式化 | 输出位置 |
|---|---|---|---|---|
fmt.Fprint |
❌ | ❌ | ❌ | io.Writer |
fmt.Fprintln |
✔️ | ✔️ | ❌ | io.Writer |
fmt.Fprintf |
❌ | ❌ | ✔️ | io.Writer |
示例:
go
file, _ := os.Create("log.txt")
fmt.Fprintf(file, "error: %v\n", err)
📌 全家桶总结(非常适合面试)
| 前缀 | Println | Printf | |
|---|---|---|---|
fmt. |
输出到 stdout | 输出到 stdout | 格式化输出到 stdout |
fmt.S |
返回 string | 返回 string | 返回格式化 string |
fmt.F |
写入 io.Writer | 写入 io.Writer | 格式化写入 io.Writer |
📌 一句话记忆法
-
Print → 屏幕
-
Sprint → 字符串
-
Fprint → 文件
-
Ln → 自动换行
-
f → 格式化
go
func main() {
// Println、Print、Printf 控制台
fmt.Println("Hello, World!")
fmt.Print("this is Print,so need add ?\n")
fmt.Printf("this is Printf,so can %d\n", 123)
// Sprint、Sprintf、Sprintln 字符串
msg := fmt.Sprintf("id=%d name=%s", 10, "Tom")
fmt.Println(msg)
// Fprint、Fprintf、Fprintln 文件
f, err := os.Create("out.txt")
if err != nil {
log.Fatal(err)
}
defer f.Close()
fmt.Fprintln(f, "file log: ", 42)s
}