Go语言学习(5) - 打印格式化

打印格式化中我们常常 需要用到的格式化的标记,每个标记实际来源于我们的单词,本文介绍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语法字符串字面值,必要时采用安全的转义表示

说了这么多文字,不如来点实际的,上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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)
}

运行结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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==测试
坚持原创技术分享,您的支持将鼓励我继续创作!
-------------本文结束感谢您的阅读-------------
分享到:
0%