千家信息网

Go语言中的占位符有哪些

发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,本篇内容主要讲解"Go语言中的占位符有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Go语言中的占位符有哪些"吧!一、概念什么是占位符?你就从表面意思
千家信息网最后更新 2025年02月08日Go语言中的占位符有哪些

本篇内容主要讲解"Go语言中的占位符有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Go语言中的占位符有哪些"吧!

一、概念

什么是占位符?你就从表面意思理解,就是占位置,只不过有很多不同种类的位置,而且这个位置不是谁都能坐,是有要求的,在程序层面用于格式化数据。

二、哪些函数支持

Go 语言中,标准包 fmt 有好多格式化的工具函数,函数名末尾通常以 f 结尾,列举如下:

  • fmt.Printf 格式化字符串并打印到终端(标准输出)。

  • fmt.Sprintf 格式化字符串并返回。

  • fmt.Sscanf 从字符串中解析占位符的对应位置数据。

  • fmt.Fscanfio.Reader 类型中读取数据并解析占位符的对应位置数据,用于读取文件、终端(标准输入)。

  • fmt.Fprintf 将格式化的字符串数据输出到 io.Writer 类型中,用于输出到文件。

  • fmt.Errorf 格式化方式创建一个错误类型消息。

这块没有重点展开讲解各个函数,只是简单罗列下,如果还不明白自行查一下,也可以问我。

下来看看本篇的重点...

三、占位符使用

占位符需要使用 % 符号表示,简单展示一个。

s := fmt.Sprintf("%s真帅", "老苗")fmt.Println(s)// 输出老苗真帅

%s 标示字符串,将"老苗"字符串填充到 %s 位置。下来看看到底有哪些占位符?

四、普通占位符

先创建一个数据,作为打印的对象。

type Example struct { Content string}var data = Example{Content: "例子"}

1. %v、%+v、%#v

%v:获取数据的值,如果实现了 error 接口,仅表示错误消息。

fmt.Printf("%v", data) // 输出 {例子}fmt.Printf("%v", errors.New("我错了"))// 输出我错了

%+v:获取数据的值,如果结构体,会携带字段名。

fmt.Printf("%+v", data)// 输出{Content:例子}

%#v:获取数据的值,如果是结构体,会携带结构体名和字段名。

fmt.Printf("%#v", data)// 输出main.Example{Content:"例子"}

2. %T

获取数据类型

fmt.Printf("%T", data)// 输出main.Example

3. %%

字面上的一个百分号。

fmt.Printf("%%")// 输出%

五、布尔占位符

%t

true 或 false。

fmt.Printf("%t", true)// 输出true

六、整数占位符

1. %b

二进制。

fmt.Printf("%b", 4)// 输出100

2. %c

Unicode 码转字符。

fmt.Printf("%c", 0x82d7)// 输出苗

3. %d、%5d、%-5d、d

十进制整数表示。

fmt.Printf("%d,%d,%d", 10, 010, 0x10)// 输出10,8,16

三个数据: 10 十进制, 010 八进制, 0x10 十六进制

占位符还可以指定最小宽度,格式如下:

%5d%-5dd

例:

fmt.Printf("|%5d|%-5d|d|", 1, 1, 1)// 输出|    1|1    |00001|

4. %o、%#o

八进制表示

fmt.Printf("%o,%o,%o", 10, 010, 0x10)// 输出12,10,20

在很多开发语言中,0 打头的数字都表示八进制。通过 %#o 输出带 0 开头。

fmt.Printf("\n%#o\n", 10)// 输出012

5. %q

%c 类似,都是 Unicode 码转字符,只是结果多了单引号。

fmt.Printf("%q", 0x82d7)// 输出'苗'

汉字对应表: http://www.chi2ko.com/tool/CJK.htm

6. %x、%#x

十六进制表示,字母形式为小写 a-f, %#x 输出带 0x 开头。

fmt.Printf("%x, %#x", 13, 13)// 输出d, 0xd

7. %X、%#X

十六进制表示,字母形式为小写 A-F, %#X 输出带 0X 开头。

fmt.Printf("%X, %#X", 13, 13)// 输出D, 0XD

8. %U、%#U

%U:转化为 Unicode 格式规范。

fmt.Printf("%U", 0x82d7)// 输出U+82D7

%#U:转化为 Unicode 格式并带上对应的字符。

fmt.Printf("%#U", 0x82d7)// 输出U+82D7 '苗'

七、浮点数与复数

1. %b

浮点数转化为 2 的幂的科学计数法。

fmt.Printf("%b", 0.1)// 输出7205759403792794p-56

2. %e、%E

10 的幂的科学计数法。

fmt.Printf("%e", 10.2)// 输出1.020000e+01
fmt.Printf("%E", 10.2)// 输出1.020000E+01区别: %e 与 %E 输出时的大小写之分。

3. %f、%.2f

浮点数, %.2f 表示保留 2 位小数, %f 默认保留 6 位, %f%F 等价。

保留的规则我现在还没有搞清楚,有时候符合四舍五入,有时候不符合,容我下来研究下,再告诉大家。

fmt.Printf("%f", 10.2)// 输出10.200000fmt.Printf("%.2f|%.2f", 10.232, 10.235)// 输出10.23|10.23

也可以加入最小宽度,如下:

  • %9.2f 宽度最小为 9,包含小数位在内,精度为 2。

  • %9.f%9f 宽度最小为 9。

4. %g、%.3g

根据情况选择 %e%f ,但末尾去除 0。

%f 情况如下:

fmt.Printf("%g|%g", 10.20, 1.200000+3.400000i)// 输出10.2|(1.2+3.4i)

%e 情况如下:

fmt.Printf("%g|%g", 2e2, 2E2)// 输出200|200

%.3g 表示的不是小数保留 3 位,而是只保留 3 个数字。

fmt.Printf("%.3g", 12.34)// 输出12.3

思考:官网中 %g 和 %G 是有区别的,但我测试下来是等价的,可能我的测试有问题,我给出官网文档,如下:

%g %e for large exponents, %f otherwise. Precision is discussed below.%G %E for large exponents, %F otherwise

八、字符串与字节切片

1. %s

字符串或字节切片

fmt.Printf("%s|%s", "老苗", []byte("嘿嘿嘿"))// 输出老苗|嘿嘿嘿

2. %q

有 Go 语言安全转义,双引号包裹。

fmt.Printf("%q", "老苗")// 输出"老苗"

3. %x、%X

十六进制, %x 小写字母 a - f, %X 大写字母 A - F。

fmt.Printf("%x|%X", "苗", "苗")// 输出e88b97|E88B97

九、指针

%p、%#p

地址,使用十六进制表示, %p 带 0x, %#p 不带。

num := 2s := []int{1, 2}fmt.Printf("%p|%p", &num, s)// 输出0xc00000a1d0|0xc00000a1e0

十、其它标记

1. +

打印数值的正负号,对于 %+q ,只输出 ASCII 编码的字符,如果非 ASCII 编码,则转成 Unicode 编码输出。

fmt.Printf("%+d|%+d", 2, -2)// 输出+2|-2fmt.Printf("%+q|%+q", "miao","苗")// 输出"miao"|"\u82d7"

2. -

在右侧填充空格,这块就不举例了,使用如 %-5d ,浮点 %-9.2f 也支持,其它占位符大家可以有兴趣自行实验。

3.

  • 为八进制添加前导 0,上面已举例。

  • 为十六进制添加前导 0x 或 0X,上面已举例。

  • %#p去掉 0x。

  • %+q 打印字符串时使用反引号包裹。

fmt.Printf("%#q", "苗")// 输出`苗`

%#U 打印编码时,带上字符,上面已举例。

4. ' ' 空格

为正负号留出空白位置。

fmt.Printf("|% d|", 2)// 输出| 2|

5. 0

填充前导的 0,对于数字会移到正负号之后,非数字也可使用。

fmt.Printf("s", "a")// 输出0000afmt.Printf("%+05d", 1)// 输出+0001

精度截断字符串

给字符串使用精度,用来截断字符串。

fmt.Printf("%.2s", "abc")// 输出ab

总结
占位符区分大小写,总共讲了 20 个,但占位符相关的知识点其实还有,我暂时也不想研究了,因为在项目中也很难使用到。

到此,相信大家对"Go语言中的占位符有哪些"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

输出 字符 字符串 数据 格式 位置 老苗 语言 十六进制 最小 例子 八进制 函数 字母 宽度 数字 类型 编码 前导 小写 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库不安全隐患 郑州融创网络技术有限公司 远古服务器 浦东新区网络软件开发制品价格 软件开发公司的特殊性 ps5链接不上服务器 交银企服软件开发怎样 无锡凌梵网络技术有限公司 监控流媒体服务器部署在哪里 怀柔区提供软件开发设计专业服务 计算机网络技术阚宝鹏 手机应用开发比软件开发 查询单位服务器信息 网络安全大比武试题 一个数据库一般存放多少条数据 服务器怎么解压文件 618代理服务器 关闭xshell连接的服务器 学数据库用到什么软件 如何通过软件找软件开发公司 网页如何输出json数据库 新一代软件开发设施值得推荐 方舟生存进化手游私人服务器转服 大学计算机网络技术课件 网络安全审计哪家好 怎么诊断工业网络安全问题 金铲铲之战手游助手服务器爆满 无卡还款软件开发公司 三菱服务器al20 网络安全应急队伍推荐
0