区别
Print打印输出:
fmt.Print() // 打印输出
Println打印输出并换行
fmt.Println() // 打印输出并换行
Printf格式化字符串并输出,最后一个字母f表示format
fmt.Printf("打印这个字符串:%s ","string") // 格式化字符串并输出
Fprintf把格式字符串输出到指定的文件设备中,输出到io.Writers 而不是 os.Stdout。第一个字符F表示file.
fmt.Fprintf(os.Stderr, “this is a %s\n”, "string")
Sprintf格式化字符串并返回,不会输出,可用于赋值
str := fmt.Sprintf("打印这个字符串:%s ","string")
fmt.Print(str)
fmt.SPrintf("打印这个字符串:%s ","string") // 无任何输出
常见占位符
打印基本数据类型
// 整型
fmt.Printf("%d\n", 123) // 123
// 浮点数
fmt.Printf("%f\n", 123.1) // 123.1
// 字符串
fmt.Printf("%s\n", "qwe") // qwe
// any value in a nature format: 适合struct,map等
fmt.Printf("%v\n", "qwe") // qwe
fmt.Printf("%+v\n", "qwe") // 这个+会把对象的field名也打印出来
// type of any value: 对象类型
fmt.Printf("%T\n", "qwe") // string
// 布尔值
fmt.Printf("%t\n", true) // true
// 二进制
fmt.Printf("%b\n", 14) // 1110
// 十六进制
fmt.Printf("%x\n", 14) // 14
// 整数对应字符
fmt.Printf("%c\n", 33) // !
// 浮点数
fmt.Printf("%f\n", 78.9) // 78.900000
// 科学计数法
fmt.Printf("%e\n", 123400000.0) // 1.234000e+08
fmt.Printf("%E\n", 123400000.0) // 1.234000E+08
打印结构体
type point struct {
x, y int
}
// 打印结构体实例
p := point{1, 2}
fmt.Printf("%v\n", p) // {1 2}
// 打印结构体键值对
fmt.Printf("%+v\n", p) // {x:1 y:2}
// 打印值源码片段
fmt.Printf("%#v\n", p) // main.point{x:1, y:2}
// 打印值类型
fmt.Printf("%T\n", p) // main.point