Go语言中的格式化输出占位符的用法详解

 更新时间:2024年10月31日 09:59:51   作者:越千年  
在 Go 语言中,格式化输出是一个非常常用的功能,特别是在处理字符串、数字和其他数据类型时,本文将详细介绍 Go 语言中常用的格式化占位符及其用法,希望对大家有所帮助

在 Go 语言中,格式化输出是一个非常常用的功能,特别是在处理字符串、数字和其他数据类型时。Go 提供了丰富的格式化选项,通过占位符来控制输出的格式。本文将详细介绍 Go 语言中常用的格式化占位符及其用法。

基本格式化函数

Go 语言提供了几个内置的格式化函数,这些函数主要位于 fmt 包和 log 包中:

fmt 包

fmt.Printf(format string, a ...interface{}):格式化输出到标准输出。

fmt.Sprintf(format string, a ...interface{}):格式化输出到字符串。

fmt.Fprintf(w io.Writer, format string, a ...interface{}):格式化输出到 io.Writer

log 包

log.Printf(format string, v ...interface{}):格式化输出到日志。

常用的格式化占位符

字符串格式化

占位符描述示例
%s格式化字符串fmt.Printf("%s", "Hello")
%q格式化字符串,用双引号包围fmt.Printf("%q", "Hello")

数字格式化

整数

占位符描述示例
%d十进制整数fmt.Printf("%d", 123)
%b二进制整数fmt.Printf("%b", 123)
%o八进制整数fmt.Printf("%o", 123)
%x十六进制整数(小写字母)fmt.Printf("%x", 123)
%X十六进制整数(大写字母)fmt.Printf("%X", 123)
%cASCII 码对应的字符fmt.Printf("%c", 65)
%UUnicode 码点fmt.Printf("%U", 'A')

浮点数

占位符描述示例
%f浮点数fmt.Printf("%f", 123.456)
%e科学记数法(小写字母 e)fmt.Printf("%e", 123.456)
%E科学记数法(大写字母 E)fmt.Printf("%E", 123.456)
%g根据值的大小选择 %e 或 %ffmt.Printf("%g", 123.456)
%G根据值的大小选择 %E 或 %ffmt.Printf("%G", 123.456)

布尔值

占位符描述示例
%t布尔值fmt.Printf("%t", true)

其他类型

占位符描述示例
%p指针地址fmt.Printf("%p", &value)
%T类型名称fmt.Printf("%T", value)

特殊格式化

占位符描述示例
%v格式化任何值,默认格式fmt.Printf("%v", "Hello")
%+v格式化任何值,包含结构体字段fmt.Printf("%+v", struct{ Name string }{"Alice"})
%#v格式化任何值,Go 语法格式fmt.Printf("%#v", "Hello")

自定义宽度和精度

占位符描述示例
%wd设置最小宽度,不足部分用空格填充fmt.Printf("%5d", 123)
%0wd设置最小宽度,不足部分用零填充fmt.Printf("%05d", 123)
%wf设置浮点数的小数位数fmt.Printf("%.2f", 123.456)

对齐方式

占位符描述示例
%-w左对齐fmt.Printf("%-5d", 123)
%+w右对齐(默认)fmt.Printf("%+5d", 123)

示例代码

fmt 包示例

package main

import (
    "fmt"
)

func main() {
    // 字符串格式化
    fmt.Printf("String: %s\n", "Hello")
    fmt.Printf("Quoted String: %q\n", "Hello")

    // 数字格式化
    fmt.Printf("Decimal: %d\n", 123)
    fmt.Printf("Binary: %b\n", 123)
    fmt.Printf("Octal: %o\n", 123)
    fmt.Printf("Hexadecimal (lower): %x\n", 123)
    fmt.Printf("Hexadecimal (upper): %X\n", 123)
    fmt.Printf("Character: %c\n", 65)
    fmt.Printf("Unicode: %U\n", 'A')

    // 浮点数格式化
    fmt.Printf("Float: %f\n", 123.456)
    fmt.Printf("Scientific (lower): %e\n", 123.456)
    fmt.Printf("Scientific (upper): %E\n", 123.456)
    fmt.Printf("General (lower): %g\n", 123.456)
    fmt.Printf("General (upper): %G\n", 123.456)

    // 布尔值格式化
    fmt.Printf("Boolean: %t\n", true)

    // 指针地址格式化
    var value int = 123
    fmt.Printf("Pointer: %p\n", &value)

    // 类型名称格式化
    fmt.Printf("Type: %T\n", value)

    // 特殊格式化
    fmt.Printf("Default Format: %v\n", "Hello")
    fmt.Printf("Struct Fields: %+v\n", struct{ Name string }{"Alice"})
    fmt.Printf("Go Syntax: %#v\n", "Hello")

    // 自定义宽度和精度
    fmt.Printf("Width: %5d\n", 123)
    fmt.Printf("Zero-Padded Width: %05d\n", 123)
    fmt.Printf("Precision: %.2f\n", 123.456)

    // 对齐方式
    fmt.Printf("Left-Aligned: %-5d\n", 123)
    fmt.Printf("Right-Aligned: %+5d\n", 123)
}

log 包示例

package main

import (
    "log"
)

func main() {
    log.Printf("Log Message: %s", "Hello")
}

以上就是Go语言中的格式化输出占位符的用法详解的详细内容,更多关于Go格式化输出占位符的资料请关注脚本之家其它相关文章!

相关文章

  • 一文详解Golang内存管理之栈空间管理

    一文详解Golang内存管理之栈空间管理

    这篇文章主要介绍了Golang内存管理的栈空间管理,文章通过代码示例介绍的非常详细,对我们学习Golang内存管理有一定的帮助,需要的朋友跟着小编一起来学习吧
    2023-06-06
  • Go语言实现Snowflake雪花算法

    Go语言实现Snowflake雪花算法

    雪花算法产生的背景当然是twitter高并发环境下对唯一ID生成的需求,得益于twitter内部牛的技术,雪花算法能够流传于至今并且被广泛使用,本文就详细的介绍一下,感兴趣的可以了解一下
    2021-06-06
  • Go语言范围Range的实现示例

    Go语言范围Range的实现示例

    range是Go语言中一个非常有用的功能,它可以帮助我们更方便地遍历各种类型的序列,通过本文的介绍,相信你已经对range有了一定的了解,感兴趣的可以了解一下
    2025-10-10
  • go语言生成随机数和随机字符串的实现方法

    go语言生成随机数和随机字符串的实现方法

    随机数在很多时候都可以用到,尤其是登录时,本文就详细的介绍一下go语言生成随机数和随机字符串的实现方法,具有一定的参考价值,感兴趣的可以了解一下
    2021-12-12
  • Go语言类型转换工具库cast的实现

    Go语言类型转换工具库cast的实现

    本文介绍了Go语言中的类型转换工具库cast,cast库提供了一种简单安全的方式来在各种类型间转换,如ToIntSliceE、ToStringSliceE等,同时支持时间类型和时长类型的转换,并能处理转换失败的情况,感兴趣的可以了解一下
    2025-11-11
  • Go语言实现接口的示例代码

    Go语言实现接口的示例代码

    本文主要介绍了Go语言实现接口的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-03-03
  • 瞅一眼就能学会的GO并发编程使用教程

    瞅一眼就能学会的GO并发编程使用教程

    随着互联网的普及,互联网用户人数原来越多,这对系统的性能带来了巨大的挑战。这个时候就需要并发编程了,本文为大家整理了详细的GO并发编程使用教程,让你看完就能学会
    2023-02-02
  • Golang中互斥锁和读写互斥锁原理及示例代码

    Golang中互斥锁和读写互斥锁原理及示例代码

    在Golang中,互斥锁是一种基本的同步原语,用于实现对共享资源的互斥访问,读写互斥锁是一种特殊类型的互斥锁,它允许多个协程同时读取某个共享资源,本文将通过过示例代码详细介绍Golang中互斥锁和读写互斥锁,需要的朋友可以参考下
    2023-05-05
  • go处理线程之间的交互示例代码

    go处理线程之间的交互示例代码

    Go语言以goroutine为核心实现并发编程,其中线程间交互主要通过Channels、WaitGroup、Mutex和Select实现,Channels提供goroutine间的数据传递,本文给大家介绍go处理线程之间的交互示例代码,感兴趣的朋友一起看看吧
    2024-10-10
  • Go语言中的字符串拼接方法详情

    Go语言中的字符串拼接方法详情

    本文介绍Go语言中的string类型、strings包和bytes.Buffer类型,介绍几种字符串拼接方法的相关资料,需要的朋友可以参考一下,希望对你有所帮助
    2021-10-10

最新评论