Go使用fmt包输出与格式化核心库的完整指南

 更新时间:2026年03月23日 08:30:02   作者:程序员爱钓鱼  
在 Go 语言中,fmt 是最基础也是使用频率最高的标准库之一,几乎每一个 Go 程序都会用到它,下面小编就和大家详细介绍一下fmt包的具体使用吧

在 Go 语言中,fmt 是最基础也是使用频率最高的标准库之一。几乎每一个 Go 程序都会用到它,无论是打印调试信息、格式化字符串、构建日志,还是从标准输入读取数据。fmt 的核心作用可以用一句话概括:提供统一、强大的格式化输入输出能力

与很多语言不同,Go 没有复杂的字符串拼接语法,而是通过 fmt 来完成大部分输出和字符串构建工作。这种设计让代码更加清晰,也更容易维护。

在日常开发中,最常用的是输出函数。fmt.Print() 用于直接输出内容,不会自动换行,适合连续拼接输出。

fmt.Print("Hello ")
fmt.Print("Go")

输出结果:

Hello Go

如果希望自动换行,可以使用 fmt.Println()。它不仅会在末尾加换行,还会在多个参数之间自动加空格,这是开发中最常用的打印方式。

fmt.Println("Hello", "Go")

输出:

Hello Go

当需要更精细的控制时,就要使用 fmt.Printf()。这个函数支持格式化字符串,通过占位符控制输出格式。

name := "Alice"
age := 25

fmt.Printf("name: %s age: %d\n", name, age)

输出:

name: Alice age: 25

Printf 的核心是格式化占位符,常见的包括:

  • %s  字符串
  • %d  整数
  • %f  浮点数
  • %t  布尔值
  • %v  默认格式
  • %T  类型

其中 %v 是最常用的,它可以自动匹配变量类型并输出内容,而 %T 则用于调试变量类型。

除了输出到终端,fmt 还可以生成字符串。fmt.Sprintf() 是一个非常重要的函数,它不会打印内容,而是返回格式化后的字符串。

msg := fmt.Sprintf("user=%s id=%d", "bob", 1001)
fmt.Println(msg)

输出:

user=bob id=1001

这个函数在构建日志、拼接 SQL、生成 URL 时非常常见。

如果需要写入文件或网络连接,可以使用 fmt.Fprintf(),它允许把输出写入任意实现了 io.Writer 接口的对象。

file, _ := os.Create("log.txt")
fmt.Fprintf(file, "log: %s\n", "start")

在调试结构体时,fmt 提供了更强大的格式化能力。例如:

type User struct {
	Name string
	Age  int
}

u := User{"Tom", 30}

fmt.Printf("%v\n", u)
fmt.Printf("%+v\n", u)
fmt.Printf("%#v\n", u)

输出分别是:

{Tom 30}
{Name:Tom Age:30}
main.User{Name:"Tom", Age:30}

可以看到:

%v 输出值 %+v 带字段名 %#v 输出 Go 语法格式

在调试复杂结构时非常有用。

fmt 还支持对输出格式进行精细控制,例如控制宽度和精度。最常见的就是控制浮点数的小数位数。

price := 19.999
fmt.Printf("%.2f\n", price)

输出:

20.00

还可以控制对齐方式:

fmt.Printf("%10d\n", 100)   // 右对齐
fmt.Printf("%-10d\n", 100)  // 左对齐

这种能力在构建表格输出或 CLI 工具时非常实用。

除了输出,fmt 也提供了输入能力。fmt.Scan() 可以从标准输入读取数据。

var name string
fmt.Scan(&name)

fmt.Println("hello", name)

用户输入:

Alice

输出:

hello Alice

如果需要按行读取,可以使用 fmt.Scanln();如果需要按格式解析输入,可以使用 fmt.Scanf()

var name string
var age int

fmt.Scanf("%s %d", &name, &age)

输入:

Tom 18

程序会自动解析为两个变量。

在实际开发中,fmt 常见的使用方式包括:打印调试信息、构建日志字符串、生成格式化文本、CLI 输出以及简单的输入处理。虽然在高性能场景中(例如日志系统)可能会用更专业的库替代,但在绝大多数场景下,fmt 已经足够使用。

需要注意的是,fmt 的格式化功能是有一定性能开销的,因为它需要解析格式字符串。如果是在高频调用的性能敏感场景,可以考虑使用字符串拼接或 strconv 来优化。

从整体来看,fmt 是 Go 标准库中最基础也是最重要的工具之一。它统一了输出、格式化和输入处理方式,让开发者可以用简单直观的方式操作数据。无论是初学者还是高级开发者,都会频繁使用这个包。

掌握 fmt 的关键在于熟悉常用函数(Print、Println、Printf、Sprintf)以及格式化占位符。一旦熟练使用,你会发现 Go 的输出与字符串处理会变得非常高效和优雅。

到此这篇关于Go使用fmt包输出与格式化核心库的完整指南的文章就介绍到这了,更多相关Go fmt包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Golang反射获取结构体的值和修改值的代码示例

    Golang反射获取结构体的值和修改值的代码示例

    这篇文章主要给大家介绍了golang反射获取结构体的值和修改值的代码示例及演示效果,对我们的学习或工作有一定的帮助,感兴趣的同学可以参考阅读本文
    2023-08-08
  • Golang学习之平滑重启

    Golang学习之平滑重启

    这篇文章主要介绍了Golang学习之平滑重启,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • golang并发锁使用详解

    golang并发锁使用详解

    这篇文章主要介绍了golang并发锁使用详解的相关资料,需要的朋友可以参考下
    2023-02-02
  • 使用Go语言实现跨域资源共享(CORS)设置

    使用Go语言实现跨域资源共享(CORS)设置

    在Web开发中,跨域资源共享(CORS)是一种重要的安全机制,它允许许多资源在一个网页上被另一个来源的网页所访问,然而,出于安全考虑,浏览器默认禁止这种跨域访问,为了解决这个问题,我们可以使用Go语言来设置CORS,需要的朋友可以参考下
    2024-06-06
  • Golang实现短网址/短链服务的开发笔记分享

    Golang实现短网址/短链服务的开发笔记分享

    这篇文章主要为大家详细介绍了如何使用Golang实现短网址/短链服务,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
    2023-05-05
  • golang之go.mod与go.sum作用及说明

    golang之go.mod与go.sum作用及说明

    Go模块系统通过go.mod和go.sum解决依赖管理问题,实现版本隔离、可重现构建、依赖下载优化及安全验证,提升项目协作与构建的可靠性和安全性
    2025-08-08
  • Golang汇编之控制流深入分析讲解

    Golang汇编之控制流深入分析讲解

    这篇文章主要介绍了Golang汇编之控制流,程序执行的流程主要有顺序、分支和循环几种执行流程,本节主要讨论如何将Go语言的控制流比较直观地转译为汇编程序,或者说如何以汇编思维来编写Go语言代码,感兴趣的同学可以参考下文
    2023-05-05
  • Go语言中包导入下划线的作用详细解析

    Go语言中包导入下划线的作用详细解析

    这篇文章主要介绍了Go语言中包导入下划线作用的相关资料,下划线导入可以帮助我们更好地管理初始化逻辑,减少代码的冗余,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • Golang中gin框架绑定解析json数据的两种方法

    Golang中gin框架绑定解析json数据的两种方法

    本文介绍 Golang 的 gin 框架接收json数据并解析的2种方法,文中通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-12-12
  • gin框架中使用JWT的定义需求及解析

    gin框架中使用JWT的定义需求及解析

    这篇文章主要为介绍了gin框架中使用JWT的定义需求及解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04

最新评论