打印格式化中我们常常 需要用到的格式化的标记,每个标记实际来源于我们的单词,本文介绍Go语言中的打印格式化。
通用
- %v:值的默认格式,对应英文为:value
- %T:值的类型,对应英文为:Type
布尔值
%t:单词 true或者 false,对应英文:true
整型
- %b:表示为二进制,对应英文:binary
- %c:该值对应的inicode码值,对应英文:char
- %d:表示为十进制,对应英文:digital
- %8d:表示该整型长度为8,不足8位,则在数值前补空格,超过8,则以实际为准
- %08d:数字长度为8,不足8位,则在数值前补0,超过8,则以实际为准
- %o:表示为八进制,对应英文:octal
- %q:该值对应的单引号 括起来的的Go语法字符字面值,必要时 会采用安全的转义表示
- %x:表示为 十六进制,使用 a-f,对应英文:hex
- %X:表示为 十六进制,使用 A-F,对应英文:hex
- %U 表示为 unicode格式:U+1234,等价于“U+%04X”
浮点与复数
- %f (=%.6f) 有6位小数部分,如果想保留两位小数,则 %.2f 即可(使用的是四舍五入)
- %e (=%.6e) 有6位小数部分的科学计数法,如果想保留两位小数的科学计数,则 %.2e 即可
字符串和byte[]
- %s 直接输出字符串 或者 byte[]
- %q 该值的对应的双引号括起来的Go语法字符串字面值,必要时采用安全的转义表示
说了这么多文字,不如来点实际的,上代码:
package main
import "fmt"
type Student struct {
x , y int
}
func main() {
// 通用
a := 12
fmt.Printf("%T , a = %v \n", a, a)
// 相当于实例化
p := Student{1,2}
fmt.Printf("%T , a = %v \n", p, p)
var s rune = '一'
fmt.Printf("%T , a = %v \n", s, s)
// 布尔
b := true
fmt.Printf("%T , b = %t \n", b, b)
// 整数
c := 123
// %b 表示为 二进制
fmt.Printf("%T , c = %b \n", c, c)
// %d 表示为 十进制
fmt.Printf("%T , c = %d \n", c, c)
// %8d 表示该整型长度为8,不足8则在数值前补空格,如果超出8,以实际为准
fmt.Printf("%T , c = %8d \n", c, c)
// %08d 数字长度为8,不足8在前面补零,超出8,以实际为准
fmt.Printf("%T , c = %08d \n", c, c)
// %o 表示为 八进制
fmt.Printf("%T , c = %o \n", c, c)
// %x 表示为 十六进制,使用 a-f
fmt.Printf("%T , c = %x \n", c, c)
// %x 表示为 十六进制,使用 A-F
fmt.Printf("%T , c = %X \n", c, c)
// %U 表示为 unicode格式:U+1234,等价于“U+%04X”
fmt.Printf("%T , c = %U \n", c, c)
cc := '一'
fmt.Printf("%T , cc = %U \n", cc, cc)
d := 97
// %c 对应的是 unicode码值
fmt.Printf("%T , d = %c \n", d, d)
// %q 该值对应的单引号 括起来的的Go语法字符字面值,必要时 会采用安全的转义表示
fmt.Printf("%T , d = %q \n", d, d)
// 浮点数
e := 123.23456
// %f (=%.6f) 有6位小数部分,如果想保留两位小数,则 %.2f 即可(使用的是四舍五入)
fmt.Printf("%T , e = %f \n", e, e)
fmt.Printf("%T , e = %.2f \n", e, e)
// %e (=%.6e) 有6位小数部分的科学计数法,如果想保留两位小数的科学计数,则 %.2e 即可
fmt.Printf("%T , e = %e \n", e, e)
fmt.Printf("%T , e = %.2e \n", e, e)
// %E 科学计数法
fmt.Printf("%T , %E \n", e, e)
// 字符串和byte[]
f := "测试"
// %s 直接输出字符串 或者 byte[]
fmt.Printf("%T , f = %s \n", f, f)
// %q 该值的对应的双引号括起来的Go语法字符串字面值,必要时采用安全的转义表示
fmt.Printf("%T , f = %q \n", f, f)
arr := [3]byte{97, 98, 99}
fmt.Printf("%T , arr = %s \n", arr, arr)
arr2 := [3]byte{'a', 'b', 'c'}
fmt.Printf("%T , arr2 = %s \n", arr2, arr2)
fmt.Printf("%T , arr2 = %x \n", arr2, arr2)
fmt.Printf("%T , arr2 = %X \n", arr2, arr2)
// 变量赋值
g := fmt.Sprintf(f)
fmt.Println("g==" + g)
}
运行结果如下:
int , a = 12
main.Student , a = {1 2}
int32 , a = 19968
bool , b = true
int , c = 1111011
int , c = 123
int , c = 123
int , c = 00000123
int , c = 173
int , c = 7b
int , c = 7B
int , c = U+007B
int32 , cc = U+4E00
int , d = a
int , d = 'a'
float64 , e = 123.234560
float64 , e = 123.23
float64 , e = 1.232346e+02
float64 , e = 1.23e+02
float64 , 1.232346E+02
string , f = 测试
string , f = "测试"
[3]uint8 , arr = abc
[3]uint8 , arr2 = abc
[3]uint8 , arr2 = 616263
[3]uint8 , arr2 = 616263
g==测试
欢迎关注我的公众号,第一时间接收文章推送~ 搜索公众号: 码咖 或者 扫描下方二维码: