【go】格式化的输入和输出

发布于:2025-08-04 ⋅ 阅读:(14) ⋅ 点赞:(0)

Go 语言提供了强大且灵活的格式化输入输出功能,主要通过 fmt 包实现。下面是详细的分类介绍和代码示例。

一、格式化输出

1. fmt.Printfmt.Printlnfmt.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.Scanfmt.Scanlnfmt.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 官方文档


网站公告

今日签到

点亮在社区的每一天
去签到