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语法字符串字面值,必要时采用安全的转义表示

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

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==测试

欢迎关注我的公众号,第一时间接收文章推送~ 搜索公众号: 码咖 或者 扫描下方二维码:


qrcode_wx.jpg

你可能感兴趣的:(Go语言学习(5) - 打印格式化)