1.通用打印格式
打印格式化通常使用fmt包,通用的打印格式如下。
打印格式 | 打印内容 |
---|---|
%v | 值的默认格式表示 |
%+v | 类似%v,但输出结构体时会添加字段名 |
%#v | 值的Go语法表示 |
%T | 值的类型的Go语法 |
示例如下。
♾️ go 代码:package main
import "fmt"
func main() {
str := "steven"
fmt.Printf("%T , %v \n", str, str)
var a rune = '一'
fmt.Printf("%T , %v \n", a, a)
var b byte = 'b'
fmt.Printf("%T , %v \n", b, b)
var c int32 = 98
fmt.Printf("%T , %v \n", c, c)
}
运行结果如下
通过示例可以看出,使用通用的格式打印,输出结果可能不是自己想要的,为了确保输出结果与需求一致,还需要学习具体的打印格式。
2.布尔型打印格式
布尔型的具体打印格式如下。
打印格式 | 打印内容 |
---|---|
%t | 单词true或false |
示例如下。
♾️ go 代码: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)
}
运行结果如下。
3.整型打印格式
整型的具体打印格式如下。
打印格式 | 打印内容 |
---|---|
%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 |
示例如下。
♾️ go 代码:package main
import "fmt"
func main() {
fmt.Printf("%T , %d \n", 123, 123)
fmt.Printf("%T , %5d \n", 123, 123)
fmt.Printf("%T , %05d \n", 123, 123)
fmt.Printf("%T , %b \n", 123, 123)
fmt.Printf("%T , %o \n", 123, 123)
fmt.Printf("%T , %c \n", 97, 97)
fmt.Printf("%T , %q \n", 97, 97)
fmt.Printf("%T , %x \n", 123, 123)
fmt.Printf("%T , %X \n", 123, 123)
fmt.Printf("%T , %U \n", '一' , '一')
}
运行结果如下。
♾️ go 代码:int , 123
int , 123
int , 00123
int , 1111011
int , 173
int , a
int , 'a'
int , 7b
int , 7B
int32 , U+4E00
4.浮点型与复数型的打印格式
浮点型的具体打印格式如下。
打印格式 | 打印内容 |
---|---|
%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格式(获得更简洁、准确的输出) |
浮点型示例如下。
♾️ go 代码:package main
import "fmt"
func main() {
fmt.Printf("%b \n", 123.123456)
fmt.Printf("%f \n", 123.1)
fmt.Printf("%.2f \n", 123.123456)
fmt.Printf("%e \n", 123.123456)
fmt.Printf("%E \n", 123.123456)
fmt.Printf("%.1e \n", 123.123456)
fmt.Printf("%F \n", 123.123456)
fmt.Printf("%g \n", 123.123456)
fmt.Printf("%G \n", 123.123456)
}
运行结果如下。
♾️ go 代码:8664042977533870p-46
123.100000
123.12
1.231235e+02
1.231235E+02
1.2e+02
123.123456
123.123456
123.123456
复数型示例如下。
♾️ go 代码:package main
import "fmt"
func main() {
var value complex64 = 2.1 + 12i
value2 :=complex(2.1,12)
fmt.Println(real(value))
fmt.Println(imag(value))
fmt.Println(value2)
}
运行结果如下。
♾️ go 代码:2.1
12
(2.1+12i)
5.字符串与字节数组的打印格式
字符串和字节数组的具体打印格式如下。
打印格式 | 打印内容 |
---|---|
%s | 直接输出字符串或者字节数组 |
%q | 该值对应的双引号括起来的Go语法字符串字面值,必要时采用安全的转义表示 |
%x | 每个字节用两个字符十六进制表示,使用a~f |
%X | 每个字节用两个字符十六进制表示,使用A~F |
字符串示例如下。
♾️ go 代码:package main
import "fmt"
func main() {
arr := []byte{'x', 'y', 'z', 'z'}
fmt.Printf("%s \n", "欢饮大家学习区块链")
fmt.Printf("%q \n", "欢饮大家学习区块链")
fmt.Printf("%x\n", "欢饮大家学习区块链")
fmt.Printf("%X \n", "欢饮大家学习区块链")
fmt.Printf("%T , %s \n", arr, arr)
fmt.Printf("%T , %q \n", arr, arr)
fmt.Printf("%T , %x \n", arr, arr)
fmt.Printf("%T , %X \n", arr, arr)
}
运行结果如下。
♾️ go 代码:欢饮大家学习区块链
"欢饮大家学习区块链"
e6aca2e9a5aee5a4a7e5aeb6e5ada6e4b9a0e58cbae59d97e993be
E6ACA2E9A5AEE5A4A7E5AEB6E5ADA6E4B9A0E58CBAE59D97E993BE
[]uint8 , xyzz
[]uint8 , "xyzz"
[]uint8 , 78797a7a
[]uint8 , 78797A7A
进程 已完成,退出代码为 0