type
status
date
slug
summary
tags
category
icon
password
AI summary

Go语言标准库之fmt

fmt 包是 Go 语言中用于格式化输入和输出的标准库。它提供了丰富的函数来处理丰富的数据格式化需求。本文档将从基础使用到高级操作,综合述明 fmt 包的功能和应用场景。

1. 基础输出

fmt 包提供了一系列的输出函数:

1.1 Print 系列

  • fmt.Print: 输出数据,不含自动换行。
  • fmt.Println: 输出数据,并自动换行。
  • fmt.Printf: 格式化输出。

示例


2. 基础输入

fmt 包也提供输入功能:

2.1 Scan 系列

  • fmt.Scan: 接收用户输入,按空格分割值。
  • fmt.Scanln: 接收用户输入,按行分割值。
  • fmt.Scanf: 格式化接收输入。

示例


3. 基础输入

3.1 Sprint 系列

  • fmt.Sprint: 转化字符串。
  • fmt.Sprintf: 格式化转化字符串。
  • fmt.Sprintln: 转化字符串并换行。

示例


4. 格式化字符

Go 语言提供了丰富的格式化字符:

4.1 基础格式化字符

字符
描述
示例
%v
fmt.Printf("%v", 123)
%T
值的类型
fmt.Printf("%T", 123)
%d
十进制整数
fmt.Printf("%d", 123)
%f
浮点数
fmt.Printf("%f", 123.45)
%s
字符串
fmt.Printf("%s", "Go")
%p
指针
fmt.Printf("%p", &x)

4.2 特殊格式化

字符
描述
示例
%+v
包含字段信息的结构体
fmt.Printf("%+v", struct)
%#v
代码形式的结构体
fmt.Printf("%#v", struct)
%%
输出百分号
fmt.Printf("%%")

5. 格式化输出的高级用法

5.1 宽度和精度控制

  • 指定宽度: 使用数字指定最小宽度,例如 %5d 表示至少占5个字符宽度。
  • 指定精度: 对于浮点数,可以使用 %.2f 指定小数点后两位。

示例

5.2 对齐和填充

  • 默认右对齐,使用 可以左对齐。
  • 0 填充空白,例如 %05d

示例


6. 错误处理输出

fmt 包中的 Errorf 函数可以用于生成格式化的错误:

示例


7. 常见问题和注意事项

7.1 多余的参数

fmt.Printf 中提供的参数数量可以超过格式化字符串中的占位符,未使用的参数会被忽略:

7.2 参数不足

如果占位符多于提供的参数,会引发运行时错误:

8. 作业练习

  1. 编写一个程序,读取用户的姓名和年龄,并格式化输出:
      • 输入示例:Alice 30
      • 输出示例:Hello, Alice! You are 30 years old.
  1. 使用 fmt.Printf 格式化输出一个浮点数,要求保留 3 位小数并右对齐,占 10 个字符宽度。
  1. 编写一个函数,接受多个参数并使用 fmt.Sprintf 返回格式化的字符串,尝试组合多种格式化字符。
time单元测试