golang 中fmt用法

fmt包实现了格式化的I/O函数,这点类似C语言中的printf和scanf,但是更加简单.


占位符:

通用占位符:

%v	值的默认格式。当打印结构体时,“加号”标记(%+v)会添加字段名
%#v 相应的Go语法表示
%T	相应值的类型的Go语法表示
%%	字面上的百分号,并非值的占位符 
用法如下:

package main

import (
	"fmt"
)

type Sample struct {
	a   int
	str string
}

func main() {
	s := new(Sample)
	s.a = 1
	s.str = "hello"
	fmt.Printf("%v\n", *s) //{1 hello}
	fmt.Printf("%+v\n", *s) //  {a:1 str:hello}
	fmt.Printf("%#v\n", *s) // main.Sample{a:1, str:"hello"}
	fmt.Printf("%T\n", *s)   //  main.Sample
	fmt.Printf("%%\n", s.a) //  %  %!(EXTRA int=1)       <span style="color:#FF0000;"> 注:暂时还没有明白其用法</span>
} 

布尔值:

%t	 true 或 false

整数值:

%b	二进制表示
%c	相应Unicode码点所表示的字符
%d	十进制表示
%o	八进制表示
%q	单引号围绕的字符字面值,由Go语法安全地转义
%x	十六进制表示,字母形式为小写 a-f
%X	十六进制表示,字母形式为大写 A-F
%U	Unicode格式:U+1234,等同于 "U+%04X"

浮点数及复数:

%b	无小数部分的,指数为二的幂的科学计数法,与 strconv.FormatFloat中的 'b' 转换格式一致。例如 -123456p-78
%e	科学计数法,例如 -1234.456e+78
%E	科学计数法,例如 -1234.456E+78
%f	有小数点而无指数,例如 123.456
%g	根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出
%G	根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出
字符串和bytes的slice表示:

%s	字符串或切片的无解译字节
%q	双引号围绕的字符串,由Go语法安全地转义
%x	十六进制,小写字母,每字节两个字符
%X	十六进制,大写字母,每字节两个字符

指针:

%p	十六进制表示,前缀 0x
这里没有 'u' 标记。若整数为无符号类型,他们就会被打印成无符号的。类似地,这里也不需要指定操作数的大小(int8,int64)。

对于%v来说默认的格式是:

bool:                    %t
int, int8 etc.:          %d
uint, uint8 etc.:        %d, %x if printed with %#v
float32, complex64, etc: %g
string:                  %s
chan:                    %p
pointer:                 %p
由此可以看出,默认的输出格式可以使用%v进行指定,除非输出其他与默认不同的格式,否则都可以使用%v进行替代(但是不推荐使用)

对于复合对象,里面的元素使用如下规则进行打印:

struct:             {field0 field1 ...}
array, slice:       [elem0  elem1 ...]
maps:               map[key1:value1 key2:value2]
pointer to above:   &{}, &[], &map[]

宽度和精度:

宽度是在%之后的值,如果没有指定,则使用该值的默认值,精度是跟在宽度之后的值,如果没有指定,也是使用要打印的值的默认精度.例如:%9.2f,宽度9,精度2

%f:    default width, default precision
%9f    width 9, default precision
%.2f   default width, precision 2
%9.2f  width 9, precision 2
%9.f   width 9, precision 0

对数值而言,宽度为该数值占用区域的最小宽度;精度为小数点之后的位数。但对于 %g/%G 而言,精度为所有数字的总数。例如,对于123.45,格式 %6.2f会打印123.45,而 %.4g 会打印123.5。%e 和 %f 的默认精度为6;但对于 %g 而言,它的默认精度为确定该值所必须的最小

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值