深入了解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


猜你喜欢
- 本文实例为大家分享了python模拟事件触发机制的具体代码,供大家参考,具体内容如下EventManager.py# -*- encodin
- 本文实例为大家分享了wxPython实现计算器的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*-######
- 一、简介urlparse模块用户将url解析为6个组件,并以元组形式返回,返回的6个部分,分别是:scheme(协议)、netloc(网络位
- 报错现象File "<string>", line 1SyntaxError: unexpected EOF
- List:1. 什么叫商品评论?2. 评论体系的存在意义3. 评论体系的现状4. 都有哪些元素5. 该如何设计?6. 评论体系之外1.什么叫
- 分形,具有以非整数维形式充填空间的形态特征。通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后
- ASP编写完整的一个IP所在地搜索类的修正文稿修正了查询方法,查询的方法和追捕的一致;只是追捕会自动更正IP。还有个函数的书写错误,也已经修
- 文章背景:某天,我的一个同事给我看了CSDN上面的一篇关于编程语言排行榜的文章,里面我看到VB还是排名很不错的,我就说,asp(vbscri
- 现在大家常用的桌面操作系统有:Windows、Mac OS、ubuntu,其中Mac OS 和 ubuntu上都会自带python。这里我们
- CentOS7的yum源中默认好像是没有MySQL的。为了解决这个问题,我们要先下载mysql的repo源。1. 下载mysql的repo源
- 01、函数参数和返回值的作用函数根据 有没有参数 以及 有没有返回值,可以相互结合,共有四种:无参数 无返回值无参数 有返回值有参数 无返回
- 本文我们来做一个简单的随机漫步数据图,进一步了解matplotlib的使用,使用Python生成随机漫步数据,再使用matplotlib绘制
- import csvfor line in open("test.csv"):name,age,birthday = l
- 背景:最近在做vue的项目,因为页面的逻辑比较复杂,代码量较多,所以就想抽离出一些组件放到component里面。问题就随之来了。因为vue
- 使用Python IDLE时发现并没有清空当前窗口的快捷键,也没有像 clear 这样的命令,使用非常不便。新建一个 ClearWindow
- 我们网站的静态资源(css、js和背景图片)和web应用程序是分开部署的,几乎所有的静态资源都部署在同一个应用下。最开始的网站
- 阅读上一篇教程:WEB2.0网页制作标准教程(7)CSS学习入门 CSS布局与传统表格(table)布局最大的区别在于:原来的定位都是采用表
- 最近 W3C 一口气推出 7 个 HTML 工作草案,涵盖了 HTML5,HTML RDF,HTML Microdata,HTM
- 一、 模块1、模块的概念模块是 Python 程序架构的一个核心概念每一个以扩展名 py 结尾的 Python 源代码文件都是一个 模块模块
- 解决方法如下: 在Firefox地址栏里输入 about:config 在配置列表中找到dom.allow_scripts_to_close