it编程 > 前端脚本 > Golang

Go语言fmt模块的完整方法详解及示例代码

5人参与 2025-04-24 Golang

前言

以下是 go 语言 fmt 模块的完整方法详解及示例,涵盖所有核心功能:

一、输出函数

将数据写入标准输出、文件或字符串。

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

功能

将内容写入指定的 io.writer(如文件、网络连接)。

示例

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

功能

从指定的 io.reader(如文件)读取数据。

示例

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"

三、格式化动词

常用格式化占位符(部分):

动词说明示例
%v默认格式%v → {alice 30}
%d十进制整数%d → 25
%f浮点数%f → 3.141593
%s字符串%s → “hello”
%t布尔值%t → true
%p指针地址%p → 0xc0000a
%t类型%t → int

四、其他功能

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}

五、注意事项

六、完整函数列表

函数签名功能说明
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)写入 io.writer
sprint(a ...any) string返回格式化字符串
errorf(format string, a ...any) error生成格式化错误

通过掌握 fmt 包的方法,可以高效处理输入输出、字符串格式化及错误生成。

到此这篇关于go语言fmt模块的文章就介绍到这了,更多相关go语言fmt模块详解内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Go语言中html/template模块详细功能介绍与示例代码

04-24

Go语言中sync包使用方法教程

04-24

Go语言标准库中math模块详细功能介绍与示例代码

04-24

GoLand 中设置默认项目文件夹的实现

04-24

gin+gorm实现goweb项目的示例代码

04-24

GORM中Model和Table的区别及使用

04-24

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论