输出格式 | 输出内容 |
---|
%v | 值的默认格式表示 |
%+v | 类似 %v,但输出结构体时会添加字段名 |
%#v | 值的 Go 语法表示 |
%Т | 值的类型的 Go 语法表示 |
package main
import "fmt"
func main() {
str := "lsx"
fmt.Printf("%T, %v \n", str, str) // string, lsx
fmt.Printf("%T, %+v \n", str, str) // string, lsx
fmt.Printf("%T, %#v \n", str, str) // string, "lsx"
var a rune = '刘'
fmt.Printf("%T, %v \n", a, a) // int32, 21016
var b byte = 'a'
fmt.Printf("%T, %v \n", b, b) // uint8, 97
var c int32 = 97
fmt.Printf("%T, %v \n", c, c) // int32, 97
}
输出格式 | 输出内容 |
---|
%t | 单词 true 或 false |
package main
import "fmt"
func main() {
var flag bool
fmt.Printf("%T, %t \n", flag, flag) // bool, false
flag = true
fmt.Printf("%T, %t \n", flag, flag) // 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() {
fmt.Printf("%T, %b \n", 123, 123) // int, 1111011
fmt.Printf("%T, %c \n", 97, 97) // int, a
fmt.Printf("%T, %d \n", 123, 123) // int, 123
fmt.Printf("%T, %5d \n", 123, 123) // int, 123
fmt.Printf("%T, %05d \n", 123, 123) // int, 00123
fmt.Printf("%T, %o \n", 123, 123) // int, 173
fmt.Printf("%T, %q \n", 97, 97) // int, 'a'
fmt.Printf("%T, %x \n", 123, 123) // int, 7b
fmt.Printf("%T, %X \n", 123, 123) // int, 7B
fmt.Printf("%T, %U \n", '一', '一') // int32, U+aE00
}
输出格式 | 输出内容 |
---|
%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() {
fmt.Printf("%b \n", 123.123456)// 8664042977533870p-46
fmt.Printf("%e \n", 123.123456)// 1.231235e+02
fmt.Printf("%.1e \n", 123.123456)// 1.2e+02
fmt.Printf("%E \n", 123.123456)// 1.231235E+02
fmt.Printf("%f \n", 123.1)// 123.100000
fmt.Printf("%.2f \n", 123.125456)// 123.13
fmt.Printf("%F \n", 123.123456)// 123.123456
fmt.Printf("%g \n", 123.123456)// 123.123456
fmt.Printf("%G \n", 123.123456)// 123.123456
}
字符串和字节数组
输出格式 | 输出内容 |
---|
%s | 直接输出字符串或者字节数组 |
%q | 该值对应的双引号括起来的Go语法字符串字面值,必要时会采用安全的转义表示 |
%x | 每个字节用两字符十六进制数表示,使用 a~f |
%X | 每个字节用两字符十六进制数表示,使用 A~F |
package main
import "fmt"
func main() {
arr := []byte{'a', 'b', 'c', 'd'}
fmt.Printf("%s \n", "我是冠军") // 我是冠军
fmt.Printf("%q \n", "我要金腰带") // "我要金腰带"
fmt.Printf("%x \n", "我音乐播放器") // e68891e99fb3e4b990e692ade694bee599a8
fmt.Printf("%X \n", "我音乐播放器") // E68891E99FB3E4B990E692ADE694BEE599A8
fmt.Printf("%T, %s \n", arr, arr) // []uint8, abcd
fmt.Printf("%T, %q \n", arr, arr) // []uint8, "abcd"
fmt.Printf("%T, %x \n", arr, arr) // []uint8, 61626364
fmt.Printf("%T, %X \n", arr, arr) // []uint8, 61626364
}
package main
import "fmt"
func main() {
fmt.Println("枫枫\t知道") // 制表符
fmt.Println("枫枫\n知道") // 回车
fmt.Println("\"枫枫\"知道") // 双引号
fmt.Println("枫枫\r知道") // 回到行首
fmt.Println("C:\\pprof\\main.exe") // 反斜杠
}