Go语言学习 - 打印格式化

Posted 翻身码农把歌唱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言学习 - 打印格式化相关的知识,希望对你有一定的参考价值。

打印格式化中我们常常 需要用到的格式化的标记,每个标记实际来源于我们的单词,本文介绍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. package main

  2. import "fmt"


  3. type Student struct {

  4.    x , y int

  5. }


  6. func main() {

  7.    // 通用

  8.    a := 12

  9.    fmt.Printf("%T , a = %v \n", a, a)

  10.    // 相当于实例化

  11.    p := Student{1,2}

  12.    fmt.Printf("%T , a = %v \n", p, p)


  13.    var s rune = '一'

  14.    fmt.Printf("%T , a = %v \n", s, s)


  15.    // 布尔

  16.    b := true

  17.    fmt.Printf("%T , b = %t \n", b, b)


  18.    // 整数

  19.    c := 123

  20.    // %b 表示为 二进制

  21.    fmt.Printf("%T , c = %b \n", c, c)

  22.    // %d 表示为 十进制

  23.    fmt.Printf("%T , c = %d \n", c, c)

  24.    // %8d 表示该整型长度为8,不足8则在数值前补空格,如果超出8,以实际为准

  25.    fmt.Printf("%T , c = %8d \n", c, c)

  26.    // %08d 数字长度为8,不足8在前面补零,超出8,以实际为准

  27.    fmt.Printf("%T , c = %08d \n", c, c)

  28.    // %o 表示为 八进制

  29.    fmt.Printf("%T , c = %o \n", c, c)

  30.    // %x 表示为 十六进制,使用 a-f

  31.    fmt.Printf("%T , c = %x \n", c, c)

  32.    // %x 表示为 十六进制,使用 A-F

  33.    fmt.Printf("%T , c = %X \n", c, c)

  34.    // %U 表示为 unicode格式:U+1234,等价于“U+%04X”

  35.    fmt.Printf("%T , c = %U \n", c, c)

  36.    cc := '一'

  37.    fmt.Printf("%T , cc = %U \n", cc, cc)



  38.    d := 97

  39.    // %c 对应的是 unicode码值

  40.    fmt.Printf("%T , d = %c \n", d, d)

  41.    // %q 该值对应的单引号 括起来的的Go语法字符字面值,必要时 会采用安全的转义表示

  42.    fmt.Printf("%T , d = %q \n", d, d)



  43.    // 浮点数

  44.    e := 123.23456

  45.    // %f (=%.6f) 有6位小数部分,如果想保留两位小数,则 %.2f 即可(使用的是四舍五入)

  46.    fmt.Printf("%T , e = %f \n", e, e)

  47.    fmt.Printf("%T , e = %.2f \n", e, e)

  48.    // %e (=%.6e) 有6位小数部分的科学计数法,如果想保留两位小数的科学计数,则 %.2e 即可

  49.    fmt.Printf("%T , e = %e \n", e, e)

  50.    fmt.Printf("%T , e = %.2e \n", e, e)

  51.    // %E 科学计数法

  52.    fmt.Printf("%T , %E \n", e, e)


  53.    // 字符串和byte[]

  54.    f := "测试"

  55.    // %s 直接输出字符串 或者 byte[]

  56.    fmt.Printf("%T , f = %s \n", f, f)

  57.    // %q 该值的对应的双引号括起来的Go语法字符串字面值,必要时采用安全的转义表示

  58.    fmt.Printf("%T , f = %q \n", f, f)


  59.    arr := [3]byte{97, 98, 99}

  60.    fmt.Printf("%T , arr = %s \n", arr, arr)


  61.    arr2 := [3]byte{'a', 'b', 'c'}

  62.    fmt.Printf("%T , arr2 = %s \n", arr2, arr2)

  63.    fmt.Printf("%T , arr2 = %x \n", arr2, arr2)

  64.    fmt.Printf("%T , arr2 = %X \n", arr2, arr2)


  65.    // 变量赋值

  66.    g := fmt.Sprintf(f)

  67.    fmt.Println("g==" + g)

  68. }

运行结果如下:

 
   
   
 
  1. int , a = 12

  2. main.Student , a = {1 2}

  3. int32 , a = 19968

  4. bool , b = true

  5. int , c = 1111011

  6. int , c = 123

  7. int , c =      123

  8. int , c = 00000123

  9. int , c = 173

  10. int , c = 7b

  11. int , c = 7B

  12. int , c = U+007B

  13. int32 , cc = U+4E00

  14. int , d = a

  15. int , d = 'a'

  16. float64 , e = 123.234560

  17. float64 , e = 123.23

  18. float64 , e = 1.232346e+02

  19. float64 , e = 1.23e+02

  20. float64 , 1.232346E+02

  21. string , f = 测试

  22. string , f = "测试"

  23. [3]uint8 , arr = abc

  24. [3]uint8 , arr2 = abc

  25. [3]uint8 , arr2 = 616263

  26. [3]uint8 , arr2 = 616263

  27. g==测试


以上是关于Go语言学习 - 打印格式化的主要内容,如果未能解决你的问题,请参考以下文章

GO语言系列

Go语言输出打印--排坑

『Go基础』第8节 格式化输出

Go语言核心之美 3.6-template模版

go输入Hello word

go语言笔记——调试还很弱,用gdb来做?可用panic和defer。格式化代码使用gofmt,貌似我的vim插件是自带