Go语言格式化输出
1.%v:相应值的默认格式。如果变量本身为整数就是整数,本身为bool 就是bool。当不知道是什 么类型的数据可以直接使用%v进行输出。
var a int = 100
var b bool
var c byte = 'a' //c底层存的是整数,原样输出
fmt.Printf("a:%v\n", a)
fmt.Printf("b:%v\n", b)
fmt.Printf("c:%v\n", c)
输出结果:
a:100
b:false
c:97
2.%+v:打印结构体的时候,会添加字段名。
type student struct {
Name string
Age int
}
stu := student{
Name: "lily",
Age: 25,
}
fmt.Printf("stu:%+v\n", stu)
输出结果:
stu:{Name:lily Age:25}
3.%#v:相应值的Go语法表示。
c是字节类型的,底层存的是整数,%#v输出的时候,输出的是十六进制数。
var c byte = 'a'
fmt.Printf("c:%#v\n", c)
输出结果:
c:0x61
4.%T:相应的类型的表示。直接会输出该变量的数据类型。
d := 'b'
fmt.Printf("d:%T\n", d)
输出结果:
d:int32
5.%t:在知道是bool类型的前提下,可以直接使用%t打印。如果不知道其类型,可以使用%v。
var b bool
fmt.Printf("b:%t\n", b)
输出结果:
b:false
6.%b:二进制表示
fmt.Printf("%b\n", 100)
输出结果:
1100100
7.%q:双引号围绕的字符串字面值,由go语法安全地转义。意思是将双引号一并输出。%s只输出字符串中的内容,不会添加“ ”
fmt.Printf("%s\n", "this is a test")
fmt.Printf("%q\n", "this is a test")
输出结果:
this is a test
“this is a test”
8.%p:取地址
var a int = 100
fmt.Printf("%p\n", &a)
输出结果:
0xc420084008
9.%%:转义
fmt.Printf("90%%\n")
输出结果:
90%
10.%f:浮点数输出
fmt.Printf("%f\n", 199.22)
fmt.Printf("%0.3f\n", 199.22) //保留小数点后3位
输出结果:
199.220000
199.220
11.%x:十六进制输出
fmt.Printf("%x\n", 1298410)
输出结果:
13cfea
12.sprintf:将整数打印成字符串的格式
a本身是int类型,str是字符串类型,可以通过sprintf将int的转成字符串
var a int = 100
str := fmt.Sprintf("%d", a)
fmt.Printf("%v\n",reflect.TypeOf(str))
fmt.Printf("str:%q\n", str)
输出结果:
str的类型:string
str:“100”
之前对格式化输出了解的不是特别的全面,这次通过学习和代码的练习,能清晰的区别并正确的使用了。
好记性不如烂笔头,做个记录以后记忆模糊的时候翻来看看。