当前位置: 代码网 > it编程>前端脚本>Golang > Go语言中的格式化输出占位符的用法详解

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

2024年11月26日 Golang 我要评论
在 go 语言中,格式化输出是一个非常常用的功能,特别是在处理字符串、数字和其他数据类型时。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格式化输出占位符的资料请关注代码网其它相关文章!

(0)

相关文章:

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

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com