4.3 KiB
在 Go 语言中,fmt
包是用于格式化输入和输出的核心工具包,提供了许多常用的函数来处理标准输入、输出以及字符串的格式化操作。以下是一些常用的 fmt
包函数及其使用方法:
1. 格式化输出
-
Print(a ...interface{}) (n int, err error)
将参数直接输出到标准输出(通常是终端),非字符串参数之间会添加空格,但不会自动换行。
示例:fmt.Print("Hello", "World") // 输出: HelloWorld fmt.Print("Hello", " ", "World") // 输出: Hello World
-
Printf(format string, a ...interface{}) (n int, err error)
根据格式化字符串format
输出内容,支持丰富的格式化占位符(如%d
、%s
等)。
示例:name := "Alice" age := 30 fmt.Printf("Name: %s, Age: %d\n", name, age) // 输出: Name: Alice, Age: 30
-
Println(a ...interface{}) (n int, err error)
类似于Print
,但在输出末尾自动添加换行符,并且每个参数之间会自动加空格。
示例:fmt.Println("Hello", "World") // 输出: Hello World
2. 格式化生成字符串
-
Sprint(a ...interface{}) string
返回格式化后的字符串,但不直接输出到标准输出。
示例:str := fmt.Sprint("Hello", " ", "World") fmt.Println(str) // 输出: Hello World
-
Sprintf(format string, a ...interface{}) string
根据格式化字符串生成一个新的字符串,但不直接输出到标准输出。
示例:name := "Bob" age := 25 str := fmt.Sprintf("Name: %s, Age: %d", name, age) fmt.Println(str) // 输出: Name: Bob, Age: 25
-
Sprintln(a ...interface{}) string
类似于Sprint
,但会在末尾添加换行符。
示例:str := fmt.Sprintln("Hello", "World") fmt.Print(str) // 输出: Hello World
3. 格式化写入文件或缓冲区
-
Fprint(w io.Writer, a ...interface{}) (n int, err error)
将参数写入到指定的io.Writer
(如文件或缓冲区)。
示例:var buf bytes.Buffer fmt.Fprint(&buf, "Hello", " ", "World") fmt.Println(buf.String()) // 输出: Hello World
-
Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
根据格式化字符串将内容写入到指定的io.Writer
。
示例:var buf bytes.Buffer fmt.Fprintf(&buf, "Name: %s, Age: %d", "Alice", 30) fmt.Println(buf.String()) // 输出: Name: Alice, Age: 30
-
Fprintln(w io.Writer, a ...interface{}) (n int, err error)
类似于Fprint
,但在末尾添加换行符。
示例:var buf bytes.Buffer fmt.Fprintln(&buf, "Hello", "World") fmt.Println(buf.String()) // 输出: Hello World
4. 格式化输入
-
Scan(a ...interface{}) (n int, err error)
从标准输入读取数据并存储到变量中,按空格分隔输入值。
示例:var name string var age int fmt.Print("请输入姓名和年龄:") fmt.Scan(&name, &age) fmt.Printf("姓名:%s,年龄:%d\n", name, age)
-
Scanf(format string, a ...interface{}) (n int, err error)
根据格式化字符串从标准输入读取数据。
示例:var name string var age int fmt.Print("请输入姓名和年龄(格式:姓名 年龄):") fmt.Scanf("%s %d", &name, &age) fmt.Printf("姓名:%s,年龄:%d\n", name, age)
-
Scanln(a ...interface{}) (n int, err error)
类似于Scan
,但会以换行符结束输入。
示例:var name string var age int fmt.Print("请输入姓名和年龄:") fmt.Scanln(&name, &age) fmt.Printf("姓名:%s,年龄:%d\n", name, age)
5. 常用格式化占位符
fmt
包中的格式化字符串支持多种占位符,以下是一些常用示例:
%v
:打印值的默认格式。%T
:打印值的类型。%d
:打印整数(十进制)。%f
:打印浮点数。%s
:打印字符串。%t
:打印布尔值(true
或false
)。%p
:打印指针地址。
示例:
fmt.Printf("Value: %v, Type: %T\n", 42, 42) // 输出: Value: 42, Type: int