• Golang的格式化输出


    一.格式化说明符

    通用占位符:
        %v	值的默认格式表示
        %+v	类似%v,但输出结构体时会添加字段名
        %#v	值的Go语法表示
        %T	打印值的类型
        %%	输出百分号
    
    布尔型占位符:
        %t	接收bool类型值,打印true或false
    
    整型占位符:
        %b	表示为二进制
        %c	该值对应的unicode码值
        %d	表示为十进制
        %o	表示为八进制
        %x	表示为十六进制,使用a-f
        %X	表示为十六进制,使用A-F
        %U	表示为Unicode格式:U+1234,等价于”U+%04X”
        %q	该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
    
    浮点数与复数占位符:
        %b	无小数部分、二进制指数的科学计数法,如-123456p-78
        %e	科学计数法,如-1234.456e+78
        %E	科学计数法,如-1234.456E+78
        %f	有小数部分但无指数部分,如123.456
        %F	等价于%f
        %g	根据实际情况采用%e或%f格式(以获得更简洁、准确的输出)
        %G	根据实际情况采用%E或%F格式(以获得更简洁、准确的输出)
    
    字符串和[]byte占位符:
        %s	直接输出字符串或者[]byte
        %q	该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示
        %x	每个字节用两字符十六进制数表示(使用a-f
        %X	每个字节用两字符十六进制数表示(使用A-F)
    
    指针占位符:
        %p 表示为十六进制,并加上前导的0x
    
    数值型宽度标识符占位符:
        %f	默认宽度,默认精度
        %9f	宽度9,默认精度
        %.2f	默认宽度,精度2
        %9.2f	宽度9,精度2
        %9.f	宽度9,精度0
        示例:
        n := 12.34
        fmt.Printf("%f
    ", n)
        fmt.Printf("%9f
    ", n)
        fmt.Printf("%.2f
    ", n)
        fmt.Printf("%9.2f
    ", n)
        fmt.Printf("%9.f
    ", n)
    

    这里比较常用的是%v,我们可以看作是万能的格式符。

    二.Golang中fmt包几种输出的区别

    我们日常在使用fmt包的过程中,主要包含几种Print序列函数:Fprint、Fprintf、Fprintln、Sprint、Sprintf、Sprintln、Print、Printf、Println。
    一般情况下,可以将Fprint、Fprintf、Fprintln归为一类,Sprint、Sprintf、Sprintln归为一类,Print、Printf、Println归为另一类。其中,Print、Printf、Println会嗲用相应的F开头的一类函数。

    func Print(a ...interface{}) (n int, err error) {
        return Fprint(os.Stdout, a...)
    }
    

    Fprint、Fprintf、Fprintln函数的第一个参数接收一个io.Writer类型,会将内容输出到io.Writer中去,而Print、Printf、Println函数是将内容输出到标准输出中,因此直接调用F类函数做这件事,并将os.Stdout作为第一个参数传入。
    Sprint、Sprintf、Sprintln是格式化内容为string类型,而不输出到某处。

    result1 := fmt.Sprintln("studygolang.com", 2013)
    result2 := fmt.Sprint("studygolang.com", 2013)
    

    返回的result1的值为:studygolang.com 2013,返回的result2的值为:studygolang.com2013。这里起到了连接字符串的作用。

  • 相关阅读:
    Mybatis中selectKey源码分析
    Mybatis 基于注解Mapper源码分析
    MyBatis的二级缓存以及装饰器模式运用
    ConcurrentSkipListMap源码分析
    CopyOnWriteArrayList源码分析
    InnoDB 单列索引与多列索引
    Java 线程池源码分析
    JDK8 ReentrantReadWriteLock源码分析
    关于lombok的坑
    on duplicate key update 的用法说明(解决批量操作数据,有就更新,没有就新增)mybatis批量操作数据更新和添加
  • 原文地址:https://www.cnblogs.com/yuhaohao/p/15385667.html
Copyright © 2020-2023  润新知