Go语言实践

Go语言--''占位符''

2019-11-19  本文已影响0人  Hifun丶

我们学习Go的过程中,会看到很多例子中在输出日志信息的时候有各种占位符,如果你不加占位符,(如果你使用Goland编辑器,它还会提示你 'No placeholders in format string')输出就是这样的:

fmt.Printf("sum is  ",10)    ------>     sum is  %!(EXTRA int=10)    

对于一直追求完美的程序员来说,这样的日志输出怎么过自己内心这一关?如果我们加了合适的占位符就能完美的解决这个问题:

fmt.Printf("sum is %d ",10)    ----->   sum is 10 

Go 的fmt 包实现了格式化I/O函数 Printf,类似于TS的 console.log() 和 C# 的 Console.WriteLine()
下面通过一个小例子来介绍Go的各种占位符:

// 定义示例类型和变量
type Human struct {
    Name string
}
var people = Human{Name:"zhangsan"}

1、普通占位符

占位符                  说明                      举例                             输出
%v              打印一个内置值的值。             Printf("%v", people)          {zhangsan}
%+v             打印结构体时,会添加字段名       Printf("%+v", people)         {Name:zhangsan}
%#v             相应值的Go语法表示               Printf("#v", people)        main.Human{Name:"zhangsan"}
%T              打印内置的或者自定义的类型        Printf("%T", people)         main.Human
%%              字面上的百分号,并非值的占位符    Printf("%%")                     %

2、布尔占位符

占位符       说明                举例                         输出
%t          true 或 false     Printf("%t", true)             true

3、整数占位符

占位符             说明                                           举例                     输出
%b                二进制表示                                    Printf("%b", 5)            101
%c                相应Unicode码点所表示的字符                    Printf("%c", 0x4E2D)       中
%d               十进制表示                                     Printf("%d", 0x12)         18
%o               八进制表示                                     Printf("%d", 10)           12
%q               单引号围绕的字符字面值,由Go语法安全地转义       Printf("%q", 0x4E2D)      '中'
%x               十六进制表示,字母形式为小写 a-f                Printf("%x", 13)           d
%X               十六进制表示,字母形式为大写 A-F                Printf("%x", 13)           D
%U              Unicode格式:U+1234,等同于 "U+%04X"            Printf("%U", 0x4E2D)       U+4E2D

4、字符串与字节切片

占位符     说明                                  举例                               输出
%s      输出字符串表示(string类型或[]byte)     Printf("%s", []byte("Go语言"))      Go语言
%q      双引号围绕的字符串,由Go语法安全地转义   Printf("%q", "Go语言")             "Go语言"
%x      十六进制,小写字母,每字节两个字符       Printf("%x", "golang")             676f6c616e67
%X      十六进制,大写字母,每字节两个字符       Printf("%X", "golang")             676F6C616E67

5、浮点数和复数的组成部分(实部和虚部)

占位符     说明                                                           举例                  输出
%b      无小数部分的,指数为二的幂的科学计数法,
        与 strconv.FormatFloat 的 'b' 转换格式一致。例如 -123456p-78
%e      科学计数法,例如 -1234.456e+78                                 Printf("%e", 10.2)     1.020000e+01
%E      科学计数法,例如 -1234.456E+78                                 Printf("%e", 10.2)     1.020000E+01
%f      有小数点而无指数,例如 123.456                                  Printf("%f", 10.2)     10.200000
%g      根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出            Printf("%g", 10.20)    10.2
%G      根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出            Printf("%G", 10.20+2i) (10.2+2i)

6、指针

占位符         说明                      举例                             输出
%p      十六进制表示,前缀 0x          Printf("%p", &people)             0x4f57f0

占位符还是很多种多样的,我们常用的那些要记清楚了,剩余的如果记得不清楚的可以随时来查一下,欢迎收藏!
推荐大家使用 Jet Brains 的Goland编辑器,如果你占位符用的不合适,它会提示你的哟~是不是很省心


image.png

来自一个程序员小学生

上一篇下一篇

猜你喜欢

热点阅读