Go 语言提供了强大且灵活的格式化输入输出功能,主要通过 fmt
包实现。下面是详细的分类介绍和代码示例。
一、格式化输出
1. fmt.Print
、fmt.Println
和 fmt.Printf
fmt.Print
:输出内容,不自动换行。fmt.Println
:输出内容,自动换行,并在多个参数之间添加空格。fmt.Printf
:使用格式化字符串输出,类似 C 语言的printf
。
示例代码:
package main
import "fmt"
func main() {
name := "Alice"
age := 25
fmt.Print("Name: ", name, ", Age: ", age) // 不换行
fmt.Println("Name:", name, "Age:", age) // 自动换行
fmt.Printf("Name: %s, Age: %d\n", name, age) // 格式化输出
}
输出结果:
Name: Alice, Age: 25Name: Alice Age: 25
Name: Alice, Age: 25
2. 格式化占位符
fmt.Printf
支持多种占位符,常用如下:
占位符 | 说明 |
---|---|
%v | 默认格式输出 |
%+v | 结构体输出带字段名 |
%#v | Go 语法格式的值 |
%T | 输出值的类型 |
%t | 布尔值(true/false) |
%d | 十进制整数 |
%b | 二进制整数 |
%x | 十六进制整数(小写) |
%X | 十六进制整数(大写) |
%f | 浮点数 |
%s | 字符串 |
%p | 指针地址 |
示例: |
package main
import "fmt"
func main() {
a := 42
b := 3.14
c := true
d := "hello"
fmt.Printf("a: %d, b: %f, c: %t, d: %s\n", a, b, c, d)
fmt.Printf("Type of a: %T\n", a)
}
输出:
a: 42, b: 3.140000, c: true, d: hello
Type of a: int
二、格式化输入
1. fmt.Scan
、fmt.Scanln
和 fmt.Scanf
fmt.Scan
:从标准输入读取数据,以空格分隔。fmt.Scanln
:类似Scan
,但读取到换行符时停止。fmt.Scanf
:按格式化字符串读取输入。
示例代码:
package main
import "fmt"
func main() {
var name string
var age int
fmt.Print("Enter your name and age: ")
fmt.Scanln(&name, &age) // 读取输入
fmt.Printf("Name: %s, Age: %d\n", name, age)
}
运行示例:
Enter your name and age: Alice 25
Name: Alice, Age: 25
2. fmt.Scanf
示例
package main
import "fmt"
func main() {
var name string
var age int
fmt.Print("Enter name and age (format: name age): ")
fmt.Scanf("%s %d", &name, &age)
fmt.Printf("Name: %s, Age: %d\n", name, age)
}
运行示例:
Enter name and age (format: name age): Bob 30
Name: Bob, Age: 30
三、从字符串中格式化输入输出
1. fmt.Sscanf
:从字符串中解析
package main
import "fmt"
func main() {
data := "Alice 25"
var name string
var age int
fmt.Sscanf(data, "%s %d", &name, &age)
fmt.Printf("Name: %s, Age: %d\n", name, age)
}
输出:
Name: Alice, Age: 25
2. fmt.Sprintf
:格式化到字符串
package main
import "fmt"
func main() {
name := "Charlie"
age := 40
result := fmt.Sprintf("Name: %s, Age: %d", name, age)
fmt.Println(result)
}
输出:
Name: Charlie, Age: 40
四、总结
功能 | 函数/方法 | 说明 |
---|---|---|
输出 | fmt.Print | 不换行输出 |
fmt.Println | 自动换行输出 | |
fmt.Printf | 格式化输出 | |
输入 | fmt.Scan | 从标准输入读取 |
fmt.Scanln | 读取到换行符 | |
fmt.Scanf | 按格式读取输入 | |
字符串操作 | fmt.Sscanf | 从字符串解析 |
fmt.Sprintf | 格式化到字符串 |
通过 fmt
包,Go 提供了强大而灵活的输入输出功能,适用于控制台交互、日志记录、字符串解析等多种场景。
如需更详细的文档,可以参考 Go 官方文档。