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

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结构体输出带字段名
%#vGo 语法格式的值
%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 官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔都吴所谓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值