前面我们在学习的时候经常会见到 fmt.Printf(%xxx,变量) 这种格式化输出
但具体不清楚有那些,这里就小小的整理一下 或者去下面的网站去查,更详细Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国Go语言文档中文版,Go语言中文网,中国 Golang 社区,Go语言学习园地,致力于构建完善的 Golang 中文社区,Go语言爱好者的学习家园。分享 Go 语言知识,交流使用经验https://studygolang.com/pkgdoc
1、通用输出
%v #仅输出该变量的值
%+v #输出 该变量的值,如果是数组k/v 则将k/v都输出
%#v #先输出结构体名字值,再输出结构体(字段名字+字段的值)
%T #输出结构体名称
%% #百分号
案例
package main
import (
"fmt"
)
type student struct {
id int
name string
}
func main() {
ss := student{id: 1,name: "test"}
fmt.Printf("%v \n",ss) //%v 当碰到数组时,仅输出value,不输出key
fmt.Printf("%+v \n",ss) //%+v 当碰到数组时,将key-value 都输出
fmt.Printf("%#v \n",ss) //%#v 输出时,会将方法名 +k/v都输出
fmt.Printf("%T \n",ss) //%T 输出结构体名称()
fmt.Printf("%% \n") //%% 没有意义,只是输出一个%
}
返回
{1 test}
{id:1 name:test}
main.student{id:1, name:"test"}
main.student
%
2、整数类型
%b 二进制表示
%c 相应Unicode码点所表示的字符
%d 十进制表示
%o 八进制表示
%q 单引号围绕的字符字面值,由Go语法安全地转义
%x 十六进制表示,字母形式为小写 a-f
%X 十六进制表示,字母形式为大写 A-F
%U Unicode格式:123,等同于 "U+007B"
案例
package main
import (
"fmt"
)
func main() {
ss := 68
fmt.Printf("%b \n",ss) //二进制表示
fmt.Printf("%c \n",ss) //Unicode码表示的字符
fmt.Printf("%d \n",ss) //十进制表示
fmt.Printf("%o \n",ss) //八进制
fmt.Printf("%q \n",ss) //输出字符,单引号包裹
fmt.Printf("%x \n",ss) //十六进制输出 小写
fmt.Printf("%X \n",ss) //十六进制输出 大写
fmt.Printf("%U \n",ss) //Unicode格式
}
返回
1000100 #二进制
D #unicode码的字符
68 #十进制输出
104 #八进制输出
'D' #单引号输出unicode码
44 #十六进制
44 #十六进制
U+0044
3、浮点数
%b 无小数部分、二进制指数的科学计数法,如-123456p-78;参见strconv.FormatFloat
%e 科学计数法,如-1234.456e+78
%E 科学计数法,如-1234.456E+78
%f 有小数部分但无指数部分,如123.456
%F 等价于%f
%g 根据实际情况采用%e或%f格式(以获得更简洁、准确的输出)
%G 根据实际情况采用%E或%F格式(以获得更简洁、准确的输出)
案例
package main
import (
"fmt"
)
func main() {
fmt.Printf("%b \n",68.10) //二进制输出
fmt.Printf("%e \n",68.10) //科学计数法 e
fmt.Printf("%E \n",68.10) //科学计数法 E
fmt.Printf("%f \n",68.10)
fmt.Printf("%g \n",68.10)
fmt.Printf("%G \n",68.10)
}
返回
4792111478498918p-46
6.810000e+01
6.810000E+01
68.100000
68.1
68.1
4、布尔型
%t true 或 false
5、字符串
%s 字符串或切片的无解译字节
%q 双引号围绕的字符串,由Go语法安全地转义
%x 十六进制,小写字母,每字节两个字符
%X 十六进制,大写字母,每字节两个字符
案例
package main
import (
"fmt"
)
func main() {
fmt.Printf("%s","I'm a girl")
fmt.Println()
fmt.Printf("%q","I'm a girl")
fmt.Println()
fmt.Printf("%x","I'm a girl")
fmt.Println()
fmt.Printf("%X","I'm a girl")
fmt.Println()
}
返回
I'm a girl
"I'm a girl"
49276d2061206769726c
49276D2061206769726C