Print输出方式
1.无换行打印
fmt.Print("内容", 123)
2.自动换行打印
//输出后末尾换行,多参数之间自动加空格分隔
fmt.Println("内容", 123)
3.格式化打印(占位符)
//支持 %s %d %f %v %T 等占位符,需手动加 \n 换行
fmt.Printf("姓名:%s,年龄:%d\n", "张三", 20)
4.格式化返回字符串(不直接输出)
//只生成字符串,存入变量,配合 Print 输出
s := fmt.Sprintf("a=%d", 10)
fmt.Print(s)
5.输出到 io.Writer(文件 / 缓冲区)
//Fprint/Fprintln/Fprintf:第一个参数为输出目标(终端、文件、bytes.Buffer)
fmt.Fprint(os.Stdout, "test")
fmt.Fprintln(os.Stdout, "test")
fmt.Fprintf(os.Stdout, "num=%d", 1)
log 包(日志打印,自带时间)
log.Print("普通日志")
log.Println("换行日志")
log.Printf("格式化日志 %d", 100)
// 直接打印并退出程序
log.Fatal("错误退出")
log.Fatalf("err: %v", err)
// 打印并抛出 panic
log.Panic("恐慌日志")
| 函数 | 换行 | 参数分隔 | 格式化 |
|---|---|---|---|
| ❌ | 无空格 | ❌ | |
| Println | ✅ | 空格分隔 | ❌ |
| Printf | 手动 \n | 占位符 | ✅ |
| Fprint/Fprintf | 可控 | 同上 | 支持输出到文件 |
| Sprintf | 不输出 | 占位符 | 返回字符串 |
Sprintf:只生成字符串,不打印到控制台
name := "张三"
age := 22
str := fmt.Sprintf("姓名:%s,年龄:%d", name, age)
fmt.Println(str) // 再手动打印
Fprint/Fprintf/Sprintf 配套使用示例
package main
import (
"bytes"
"fmt"
"os"
)
func main() {
// 1. Sprintf 拼接字符串
str := fmt.Sprintf("age=%d, hex=%#x", 18, 18)
fmt.Println(str)
// 2. Fprintf 输出到缓冲区
buf := new(bytes.Buffer)
fmt.Fprintf(buf, "float=%.2f", 3.1415)
fmt.Println(buf.String())
// 3. Fprint 无格式化直接输出
fmt.Fprint(os.Stdout, "直接输出", 666)
}
/*结果
age=18, hex=0x12
float=3.14
直接输出666
*/