-
range string 索引不一定连续
-
%T 类型
-
%v 值的默认格式
-
%+v 打印结构体时, 会添加字段名
-
%#v Go 语法表示
-
%p 指针
-
%t bool 类型值
-
整数
- %b 二进制表示
- %c 字符
- %d 十进制
- %o 八进制
- %q 单引号字符
- %x 十六进制, a-f
- %X 十六进制, A-F
- %U Unicode格式, U+
-
浮点数/复数
- %b 无小数部分的,指数为二的幂的科学计数法
- %e 科学计数法
- %E 科学计数法
- %f 有小数
- %g %e或%f 紧凑输出
- %G %E或%F 紧凑输出
-
字符串/字节切片
- %s 字符串
- %s 双引号字符串
- %x 十六进制
- %X 十六进制
上代码, 自己品:
package main
import "fmt"
func main() {
str := "Go编程语言"
fmt.Printf("string: %q\n", str)
fmt.Printf("runes(char): %q\n", []rune(str))
fmt.Printf("runes(hex): %x\n", []rune(str))
fmt.Printf("bytes(hex): [% x]\n", []byte(str))
}
package main
import "fmt"
func main() {
str := "Go编程语言"
for i := range str {
fmt.Printf("index: %d\n", i) // 不一定连续
}
/*
index: 0
index: 1
index: 2
index: 5
index: 8
index: 11
*/
for i, s := range str {
fmt.Printf("%d: %d %q [% x]\n", i, s, s, []byte(string(s)))
}
/*
0: 71 'G' [47]
1: 111 'o' [6f]
2: 32534 '编' [e7 bc 96]
5: 31243 '程' [e7 a8 8b]
8: 35821 '语' [e8 af ad]
11: 35328 '言' [e8 a8 80]
*/
}
package main
import (
"fmt"
)
type Cat struct {
Name string
}
func main() {
fmt.Println("--------------------bool")
b := true
fmt.Printf("%t\n", b) // true
fmt.Printf("%T\n", b) // bool
fmt.Println("--------------------string")
str := "Go语言"
fmt.Printf("%s\n", str) // Go语言
fmt.Printf("%q\n", str) // "Go语言"
fmt.Printf("%+q\n", str) // "Go\u8bed\u8a00"
fmt.Printf("%x\n", str) // 476fe8afade8a880
fmt.Printf("% x\n", str) // 47 6f e8 af ad e8 a8 80
fmt.Printf("%X\n", str) // 476FE8AFADE8A880
fmt.Printf("%T\n", str) // string
fmt.Println("--------------------struct")
cat := &Cat{Name: "Kitty"}
fmt.Printf("%v\n", cat) // &{Kitty}
fmt.Printf("%+v\n", cat) // &{Name:Kitty}
fmt.Printf("%#v\n", cat) // &main.Cat{Name:"Kitty"}
fmt.Printf("%p\n", cat) // 0xc000010280
fmt.Printf("%T\n", cat) // *main.Cat
fmt.Println("--------------------int")
i := 66
fmt.Printf("%b\n", i) // 1000010
fmt.Printf("%c\n", i) // B
fmt.Printf("%d\n", i) // 66
fmt.Printf("%d\n", i) // 66
fmt.Printf("%o\n", i) // 102
fmt.Printf("%q\n", i) // 'B'
fmt.Printf("%x\n", i) // 42
fmt.Printf("%X\n", i) // 42
fmt.Printf("%U\n", i) // U+0042
fmt.Printf("%T\n", i) // int
fmt.Println("--------------------float")
f := 66.66
fmt.Printf("%b\n", f) // 4690780486883082p-46
fmt.Printf("%e\n", f) // 6.666000e+01
fmt.Printf("%E\n", f) // 6.666000E+01
fmt.Printf("%f\n", f) // 66.660000
fmt.Printf("%g\n", f) // 66.66
fmt.Printf("%T\n", f) // float64
fmt.Println("--------------------complex")
c := 66.66 + 6.6i
fmt.Printf("%b\n", c) // (4690780486883082p-46+7430939385161318p-50i)
fmt.Printf("%e\n", c) // (6.666000e+01+6.600000e+00i)
fmt.Printf("%E\n", c) // (6.666000E+01+6.600000E+00i)
fmt.Printf("%f\n", c) // (66.660000+6.600000i)
fmt.Printf("%g\n", c) // (66.66+6.6i)
fmt.Printf("%G\n", c) // (66.66+6.6i)
fmt.Printf("%T\n", c) // complex128
fmt.Println("--------------------arrray/slice")
list := []int{10, -5, 600}
fmt.Printf("%d\n", list) // [10 -5 600]
fmt.Printf("% d\n", list) // [ 10 -5 600]
fmt.Printf("%+d\n", list) // [+10 -5 +600]
fmt.Printf("%T\n", list) // []int
}