Go语言格式化输出(新手笔记)

Go语言格式化输出

1.Go语言格式化输出(通用输出)

输出格式输出内容
%v值的默认格式表示
%+v类似 %v,但输出结构体时会添加字段名
%#v值的 Go 语法表示,会显示“ ”
%T会显示值的类型

方式一:

package main

import (
	"fmt"
)

func main() {
	a := "hello world"
	fmt.Printf("a: %v\n", a)
	fmt.Printf("a: %+v\n", a)
	fmt.Printf("a: %#v\n", a)
	fmt.Printf("a: %T\n", a)

}
//输出结果
a: hello world
a: hello world
a: "hello world"
a: string

方式二:更直观看出效果

package main

import "fmt"

type Website struct {
	Name string
}

func main() {
	site := Website{Name: "haha"}
	fmt.Printf("site: %v\n", site)  //输出site: {haha}
	fmt.Printf("site: %+v\n", site) //输出site: {Name:haha}
	fmt.Printf("site: %#v\n", site) //输出site: main.Website{Name:"haha"}
	fmt.Printf("site: %T\n", site)  //输出site: main.Website

}

//衍生版
/* package main

import "fmt"

type Website struct {
	Name string
	Age  int
}

func main() {
	site := Website{Name: "haha", Age: 18}
	fmt.Printf("site:%v\n", site)
	fmt.Printf("site: %+v\n", site)
	fmt.Printf("site: %#v\n", site)
	fmt.Printf("site: %T\n", site)

} */

2.格式化输出-布尔类型

输出格式输出内容
%t以true 或 false的方式输出布尔值
package main

import "fmt"

func main() {
	var flag bool
	fmt.Printf("%T %t\n", flag, flag)
	flag = true
	fmt.Printf("%T %t\n", flag, flag)
}
//输出结果
bool false
bool true

格式化输出-整数类型

输出格式输出内容
%b表示为二进制
%c该值对应的 unicode 码值
%d表示为十进制
%8d表示该整型长度是 8,不足 8 则在数值前补空格;如果超出 8,则以实际为准,也可以是其它整数
%08d表示该整型长度是 8,不足 8 则在数值前补 0;如果超出 8,则以实际为准,也可以是其它整数
%o表示为八进制
%q该值对应的单引号括起来的Go语言语法字符字面值,必要时会采用安全的转义表示
%x表示为十六进制,使用 a~f
%X表示为十六进制,使用 A~F
%U表示为 unicode 格式:U+1234,等价于 U+%04X
package main

import "fmt"

func main() {
	a := 1234
    //%b 表示为二进制
	fmt.Printf("a: %T;%b \n", a, a)//输出结果:a: int;10011010010
    //%c 该值对应的 unicode 码值
	fmt.Printf("a: %T;%c \n", a, a)//输出结果:a: int;Ӓ 
    //%d 表示为十进制
	fmt.Printf("a: %T;%d \n", a, a)//输出结果:a: int;1234 
    //%9d 表示该整数长度9,不足9在数值前补空格,超出则以实际为准
	fmt.Printf("a: %T;%9d \n", a, a)//输出结果:a:int;     1234 
    //%09 表示该整数长度9,不足9在数值前补0,超出则以实际为准
 	fmt.Printf("a: %T;%09d \n", a, a)//输出结果:a: int;000001234 
    //%o 表示为八进制
	fmt.Printf("a: %T;%o\n", a, a)//输出结果:a: int;2322
    //%q 该值对应的单引号括起来的Go语言语法字符字面值,必要时会采用安全的转义表示
	fmt.Printf("a: %T;%q\n", a, a)//输出结果:a: int;'Ӓ'
    //%x 表示为十六进制,使用 a~
	fmt.Printf("a: %T;%x\n", a, a)//输出结果:a: int;4d2
    //%X(大写) 表示为十六进制,使用 A~F
	fmt.Printf("a: %T;%X\n", a, a)//输出结果:a: int;4D2
    //%U表示为 unicode 格式:U+1234,等价于 U+%04X
	fmt.Printf("a: %T;%U\n", a, a)//输出结果:a: int;U+04D2

}
//输出结果
a: int;10011010010 
a: int;Ӓ 
a: int;1234 
a: int;     1234 
a: int;000001234 
a: int;2322
a: int;'Ӓ'
a: int;4d2
a: int;4D2
a: int;U+04D2

格式化输出浮点型与复数型

输出格式输出内容
%b无小数部分、二进制指数的科学计数法,如 -123456p-78
%e(=%.6e)有 6 位小数部分的科学计数法,如 -1234.456e+78
%E科学计数法,如 -1234.456E+78
%f(=%.6f)有 6 位小数部分,如 123.456123
%F等价于 %f
%g根据实际情况采用 %e 或 %f 格式(获得更简洁、准确的输出)
%G根据实际情况采用 %E 或 %F 格式(获得更简洁、准确的输出)
package main

import "fmt"

func main() {
	a := 0.12
	//%b 无小数部分、二进制指数的科学计数法,如 -123456p-78
	fmt.Printf("%b\n", a) //8646911284551352p-56
	//%e(=%.6e)有 6 位小数部分的科学计数法,如 -1234.456e+78
	fmt.Printf("%e\n", a) //1.100000e+00
	//%E 科学计数法,如 -1234.456E+78
	fmt.Printf("%E\n", a) //1.200000E-01
	//%f (=%.6f)有 6 位小数部分,如 123.456123
	fmt.Printf("%f\n", a) //0.120000
	//%F (=%.6f)有 6 位小数部分,如 123.456123
	fmt.Printf("%F\n", a) //0.120000
	//%g 根据实际情况采用 %e 或 %f 格式(获得更简洁、准确的输出)
	fmt.Printf("%g\n", a) //0.12
	//%G 根据实际情况采用 %E 或 %F 格式(获得更简洁、准确的输出)
	fmt.Printf("%G\n", a) //0.12
}


版权声明:本文为weixin_44353114原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。