深入了解Golang中的格式化输出
作者:PolarDay. 发布时间:2024-04-26 17:35:27
标签:Golang,格式化,输出
fmt
Go语言用于控制文本输出常用的标准库是fmt
fmt中主要用于输出的函数有:
Print: 输出到控制台,不接受任何格式化操作
Println: 输出到控制台并换行
Printf: 格式化输出,只可以打印出格式化的字符串,只可以直接输出字符串类型的变量(不可以直接输出别的类型)
Sprintf: 格式化并返回一个字符串而不带任何输出
Fprintf: 来格式化并输出到io.Writers而不是os.Stdout
格式化
通过Printf函数来测试下Go语言里面的字符串格式化:
fmt.Sprintf(格式化样式, 参数列表…)
格式样式: 字符串形式,格式化符号以%开头,%s字符串格式,%d十进制的整数格式
参数列表: 多个参数以逗号分隔,个数必须与格式化样式中的个数一一对应,否则运行时会报错
比如:
username := "boy"
fmt.Printf("welcome, %s", username)
整数格式化
占 位 符 | 描 述 |
---|---|
%b | 整数以二进制方式显示 |
%o | 整数以八进制方式显示 |
%d | 整数以十进制方式显示 |
%x | 整数以十六进制方式显示 |
%X | 整数以十六进制、字母大写方式显示 |
%c | 相应Unicode码点所表示的字符 |
%U | Unicode字符,Unicode格式:123,等同于“U+007B” |
func main() {
fmt.Printf("%b \n", 123) //1111011
fmt.Printf("%o \n", 123) //173
fmt.Printf("%d \n", 123) //123
fmt.Printf("%x \n", 123) //7b
fmt.Printf("%X \n", 123) //7B
fmt.Printf("%c \n", 123) //{
fmt.Printf("%U \n", 123) //U+007B
}
浮点数格式化
占 位 符 | 描 述 |
---|---|
%e | 科学计数法,例如 1.234560e+02 |
%E | 科学计数法,例如 1.234560E+02 |
%f | 有小数点而无指数,例如 123.456 |
%F | 等价于%f |
%g | 根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出 |
%G | 根据情况选择 %E 或 %F 以产生更紧凑的(无末尾的0)输出 |
func main() {
fmt.Printf("%e \n", 123.456) //1.234560e+02
fmt.Printf("%E \n", 123.456) //1.234560E+02
fmt.Printf("%f \n", 123.456) //123.456000
fmt.Printf("%F \n", 123.456) //123.456000
fmt.Printf("%g \n", 123.456) //123.456
fmt.Printf("%G \n", 123.456) //123.456
}
布尔类型格式化
占 位 符 | 描 述 |
---|---|
%t | true 或 false |
func main() {
fmt.Printf("%t", true) //true
}
字符格式化
占 位 符 | 描 述 |
---|---|
%c | 相应Unicode码点所表示的字符 |
func main() {
fmt.Printf("%c", 0x4E2D) //中
}
字符串格式化
占 位 符 | 描 述 |
---|---|
%s | 直接输出字符串或者[]byte |
%q | 双引号围绕的字符串,由Go语法安全地转义 |
%x | 每个字节用两字符十六进制数表示(使用a-f) |
%X | 每个字节用两字符十六进制数表示(使用A-F) |
func main() {
fmt.Printf("%s \n", "Hello world") //Hello world
fmt.Printf("%q \n", "Hello world") //"Hello world"
fmt.Printf("%x \n", "Hello world") //48656c6c6f20776f726c64
fmt.Printf("%X \n", "Hello world") //48656C6C6F20776F726C64
}
指针格式化
占 位 符 | 描 述 |
---|---|
%p | 表示为十六进制,并加上前导的0x |
%#p | 表示为十六进制,没有前导的0x |
func main() {
a := "Hello world"
b := &a
fmt.Printf("%p \n", b) //0xc000046230
fmt.Printf("%#p \n", b) //c000046230
}
通用占位符
占 位 符 | 描 述 |
---|---|
%v | 值的默认格式 |
%+v | 类似%v,但输出结构体时会添加字段名 |
%#v | 相应值的Go语法表示 |
%T | 相应值的类型的Go语法表示 |
%% | 百分号,字面上的%,非占位符含义 |
func main() {
fmt.Printf("%v \n", "Hello World") //Hello World
fmt.Printf("%+v \n", "Hello World") //Hello World
fmt.Printf("%#v \n", "Hello World") //"Hello World"
fmt.Printf("%T \n", "Hello World") //string
fmt.Printf("%%%v \n", "Hello World") //%Hello World
}
宽度表示
浮点数精度控制
宽度通过一个紧跟在百分号后面的十进制数指定,如果未指定宽度,则表示值时除必需之外不作填充。
精度通过(可选的)宽度后跟点号后跟的十进制数指定。如果未指定精度,会使用默认精度;如果点号后没有跟数字,表示精度为0。举例如下
func main() {
fmt.Printf("|%f|\n", 123.456) //|123.456000|
fmt.Printf("|%12f|\n", 123.456) //| 123.456000|
fmt.Printf("|%.3f|\n", 123.456) //|123.456|
fmt.Printf("|%12.3f|\n", 123.456) //| 123.456|
fmt.Printf("|%12.f|\n", 123.456) //| 123|
}
字符串长度控制
宽度设置格式:占位符中间加一个数字, 数字分正负, +: 右对齐, -: 左对齐
最小宽度:百分号后紧跟十进制数,不够部分可以选择补0
最大宽度:小数点后的十进制数,超出的部分会被截断
func main() {
fmt.Printf("|%s|\n", "123.456") //|123.456|
fmt.Printf("|%12s|\n", "123.456") //| 123.456|
fmt.Printf("|%-12s|\n", "123.456") //|123.456 |
fmt.Printf("|%012s|\n", "123.456") //|00000123.456|
fmt.Printf("|%.5s|\n", "123.456") //|123.4|
}
来源:https://blog.csdn.net/shn111/article/details/127877743
0
投稿
猜你喜欢
- 前言在实际业务场景我们可能需要开放单独用户给第三方使用,并且不想让第三方看到与业务不相关的表或视图,我们需要在数据库中设置一切权限来实现此功
- 问题背景调试脚本时,遇到一个问题:ImportError: cannot import name 'A' from '
- 傅里叶变换是在高数是一个很重要的知识点,今天将结合Python代码实现傅立叶变换。傅立叶变换我们平时是如何去分解一个复杂的问题呢?一个经典的
- Mac 环境中既有自带的 Python2.7 也有自己安装的 Python 3.5.1,默认想用 Python3 的环境1. 添加 Pyth
- 当今互联网时代,数据处理已经成为了一个非常重要的任务。而MySQL作为一款开源的关系型数据库,被广泛应用于各种场景。本篇博客将介绍如何使用P
- 前记在Python3.7后官方库出现了contextvars模块, 它的主要功能就是可以为多线程以及asyncio生态添加上下文功能,即使程
- 绘制双变量联合分布图有时我们不仅需要查看单个变量的分 布,同时也需要查看变量之间的联系, 往往还需要进行预测等。这时就需要用到双变量联合分布
- 有个简单的查看方法,打开记事本,如要查看“Chr("119") w”,可以按下Alt+119 (先按住Alt不放,然后输
- 首先写一个简单的drf接口from rest_framework.views import APIViewfrom rest_framewo
- <form id="myForm" method="post">
- 一、概述1、描述变量类型注解是用来对变量和函数的参数返回值类型做注解,让调用方减少类型方面的错误,也可以提高代码的可读性和易用性。但是,变量
- 一:关于MySQL5 MySQL5系列数据库是MySQL的最新版本的数据库,比较流行的发行版是mysql-5.0.18。MySQL 英文官方
- jupyter因为其在python框架下具有一个较为人性化的设计,从而在数据分析,python教学,以及python的快速学习中大放光彩.j
- 最近社会猪可是火遍了大江南北,不蹭下热度可对不起它。见过手画的佩奇,见过用代码画的吗?没有?那就来看我大显身手。用python的turtle
- 在tensorflow中,我们可以使用 tf.device() 指定模型运行的具体设备,可以指定运行在GPU还是CUP上,以及哪块GPU上。
- 如图所示,我们要计算任意两个向量之间的夹角。(图中的坐标数字是估计值,随手给定)python代码如下import math AB = [1,
- 本文所述实例来自独立软件开发者 Alex Marandon,在他的博客中曾介绍了数个关于 Python Collection 的实用小技巧,
- 如何正确理解和使用Command、Connection和 Recordset三个对象?我知道它们都是连接数据库的“好手”,但在编程的具体应用
- 比如下面的例子:class Book(object): def __setattr__(self, na
- <?php /* *@author 夜无眠