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

 更新时间:2025年03月29日 10:18:30   作者:demonlg0112  
这篇文章主要介绍了Go语言fmt模块使用的相关资料,fmt库最基本的功能之一就是格式化输出,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

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

一、输出函数

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

1. Print / Println / Printf

功能

  • 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

功能

  • 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}

五、注意事项

  • 错误处理Scan 系列函数返回成功解析的项数和错误。
    n, err := fmt.Scan(&a, &b)
    if err != nil {
        log.Fatal("输入错误:", err)
    }
    
  • 性能:频繁字符串拼接时,优先使用 strings.Builder 而非 Sprintf

六、完整函数列表

函数签名功能说明
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模块详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言中TCP/IP网络编程的深入讲解

    Go语言中TCP/IP网络编程的深入讲解

    这篇文章主要给大家介绍了关于Go语言中TCP/IP网络编程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • go语言执行等待直到后台goroutine执行完成实例分析

    go语言执行等待直到后台goroutine执行完成实例分析

    这篇文章主要介绍了go语言执行等待直到后台goroutine执行完成的方法,实例分析了Go语言中WaitGroup的使用技巧,需要的朋友可以参考下
    2015-03-03
  • go语言基础 seek光标位置os包的使用

    go语言基础 seek光标位置os包的使用

    这篇文章主要介绍了go语言基础 seek光标位置os包的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • go gin+token(JWT)验证实现登陆验证

    go gin+token(JWT)验证实现登陆验证

    本文主要介绍了go gin+token(JWT)验证实现登陆验证,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Linux系统下Go语言开发环境搭建

    Linux系统下Go语言开发环境搭建

    这篇文章主要介绍了Linux系统下Go开发环境搭建,需要的朋友可以参考下
    2022-04-04
  • Golang中错误处理机制详解

    Golang中错误处理机制详解

    平时在项目开发过程中少不了对错误的处理,一个好用的系统首先要确保其健壮性,不能经常发生错误就卡死之类的情况,为了让我们的程序更加健壮,我们就需要知道golang里的错误处理机制是怎么样的,这篇文章带大家一起学习,需要的朋友跟着小编一起来看看吧
    2024-05-05
  • Go设计模式之访问者模式讲解和代码示例

    Go设计模式之访问者模式讲解和代码示例

    访问者是一种行为设计模式, 允许你在不修改已有代码的情况下向已有类层次结构中增加新的行为,本文将通过代码示例给大家详细的介绍一下Go设计模式之访问者模式,需要的朋友可以参考下
    2023-08-08
  • Go 对多个网络命令空间中的端口进行监听的解决方案

    Go 对多个网络命令空间中的端口进行监听的解决方案

    这篇文章主要介绍了Go 如何对多个网络命令空间中的端口进行监听,本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • golang接收post和get请求参数处理

    golang接收post和get请求参数处理

    本文主要介绍了golang接收post和get请求参数处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Golang Defer关键字特定操作详解

    Golang Defer关键字特定操作详解

    defer是Go语言中的延迟执行语句,用来添加函数结束时执行的代码,常用于释放某些已分配的资源、关闭数据库连接、断开socket连接、解锁一个加锁的资源,这篇文章主要介绍了golang中的defer函数理解,需要的朋友可以参考下
    2023-03-03

最新评论