美文网首页Go语言实践
Go语言--''占位符''

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

作者: Hifun丶 | 来源:发表于2019-11-19 15:28 被阅读0次

    我们学习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

    来自一个程序员小学生

    相关文章

      网友评论

        本文标题:Go语言--''占位符''

        本文链接:https://www.haomeiwen.com/subject/tnnwictx.html