前言
以下是 Go 语言模块的完整方法详解及示例,涵盖所有核心功能:
一、输出函数
将数据写入标准输出、文件或字符串。
1. Print / Println / Printf
功能
- : 写入标准输出,不换行。
- : 写入标准输出并换行。
- : 格式化写入标准输出。
示例
- fmt.Print("Hello, ") // 输出:Hello,
- fmt.Println("World!") // 输出:World!(换行)
- fmt.Printf("%s %d\n", "Year:", 2023) // 输出:Year: 2023(换行)
复制代码 2. Fprint / Fprintln / Fprintf
功能
将内容写入指定的(如文件、网络连接)。
示例
- file, _ := os.Create("output.txt")
- fmt.Fprint(file, "Hello ") // 写入文件内容:Hello
- fmt.Fprintln(file, "World!") // 写入文件内容:World!(换行)
- fmt.Fprintf(file, "Value: %d", 100) // 写入文件内容:Value: 100
复制代码 3. Sprint / Sprintln / Sprintf
功能
将内容格式化为字符串并返回。
示例
- s1 := fmt.Sprint("Hello", 123) // s1 = "Hello123"
- s2 := fmt.Sprintln("World!") // s2 = "World!\n"
- s3 := fmt.Sprintf("Value: %d", 100) // s3 = "Value: 100"
复制代码 二、输入函数
从标准输入、文件或字符串读取数据。
1. Scan / Scanln / Scanf
功能
- : 从标准输入读取,以空格分隔。
- : 读取到换行符停止。
- : 按格式字符串读取。
示例
- var a int
- var b string
- // 输入:10 ABC
- fmt.Scan(&a, &b) // a=10, b="ABC"
- // 输入:20 XYZ\n
- fmt.Scanln(&a, &b) // a=20, b="XYZ"
- // 输入:Number: 30
- fmt.Scanf("Number: %d", &a) // a=30
复制代码 2. Fscan / Fscanln / Fscanf
功能
从指定的(如文件)读取数据。
示例
- file, _ := os.Open("data.txt")
- var x int
- var y string
- // 文件内容:100 Golang
- fmt.Fscan(file, &x, &y) // x=100, y="Golang"
- // 文件内容:200 Rust\n
- fmt.Fscanln(file, &x, &y) // x=200, y="Rust"
- // 文件内容:Value: 300
- fmt.Fscanf(file, "Value: %d", &x) // x=300
复制代码 3. Sscan / Sscanln / Sscanf
功能
从字符串解析数据。
示例
- str := "404 Not Found"
- var code int
- var msg string
- fmt.Sscan(str, &code, &msg) // code=404, msg="Not"
- fmt.Sscanln("500 Error\n", &code, &msg) // code=500, msg="Error"
- fmt.Sscanf("Status: 200 OK", "Status: %d %s", &code, &msg) // code=200, msg="OK"
复制代码 三、格式化动词
常用格式化占位符(部分):
动词说明示例默认格式→十进制整数→浮点数→字符串→ “hello”布尔值→指针地址→类型→
四、其他功能
1. Errorf
功能
生成格式化错误。
示例
- err := fmt.Errorf("无效的用户ID: %d", -1)
- // err.Error() = "无效的用户ID: -1"
复制代码 2. Formatter 和 Stringer 接口
功能
自定义类型的格式化行为。
示例
- type User struct {
- Name string
- Age int
- }
- // 实现 Stringer 接口
- func (u User) String() string {
- return fmt.Sprintf("%s (%d岁)", u.Name, u.Age)
- }
- // 实现 Formatter 接口
- func (u User) Format(f fmt.State, verb rune) {
- if verb == 'v' {
- fmt.Fprintf(f, "User{Name:%s, Age:%d}", u.Name, u.Age)
- }
- }
- u := User{"Bob", 30}
- fmt.Println(u) // 输出:Bob (30岁)
- fmt.Printf("%v", u) // 输出:User{Name:Bob, Age:30}
复制代码 五、注意事项
- 错误处理:系列函数返回成功解析的项数和错误。
- n, err := fmt.Scan(&a, &b)
- if err != nil {
- log.Fatal("输入错误:", err)
- }
复制代码 - 性能:频繁字符串拼接时,优先使用而非。
六、完整函数列表
函数签名功能说明- Print(a ...any) (n int, err error)
复制代码 标准输出- Println(a ...any) (n int, err error)
复制代码 标准输出并换行- Printf(format string, a ...any) (n int, err error)
复制代码 格式化输出- Fprint(w io.Writer, a ...any) (n int, err error)
复制代码 写入返回格式化字符串- Errorf(format string, a ...any) error
复制代码 生成格式化错误通过掌握包的方法,可以高效处理输入输出、字符串格式化及错误生成。
到此这篇关于Go语言fmt模块的文章就介绍到这了,更多相关Go语言fmt模块详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源:互联网
免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作! |
|