fmt标准库
-
通用占位符
占位符 说明 %v 值的默认格式表示 %+v 类似%v,但输出结构体时会添加字段名 %#v 值的Go语法表示,还会输出值类型,更加详细 %T 打印值的类型 %% 百分号 -
布尔型
占位符 说明 %t true或false -
整型
占位符 说明 %b 表示为二进制 %c 该值对应的unicode码值 %d 表示为十进制 %o 表示为八进制 %x 表示为十六进制,使用a-f %X 表示为十六进制,使用A-F %U 表示为Unicode格式:U+1234,等价于”U+%04X” %q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示 -
浮点型和复数
占位符 说明 %b 无小数部分、二进制指数的科学计数法,如-123456p-78 %e 科学计数法,如-1234.456e+78 %E 科学计数法,如-1234.456E+78 %f 有小数部分但无指数部分,如123.456 %F 等价于%f %g 根据实际情况采用%e或%f格式(以获得更简洁、准确的输出) %G 根据实际情况采用%E或%F格式(以获得更简洁、准确的输出) -
字符串和[]byte
占位符 说明 %s 直接输出字符串或者[]byte %q 该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示 %x 每个字节用两字符十六进制数表示(使用a-f %X 每个字节用两字符十六进制数表示(使用A-F) -
指针
占位符 说明 %p 表示为十六进制,并加上前导的0x -
宽度标识符
占位符 说明 %f 默认宽度,默认精度 %9f 宽度9,默认精度 %.2f 默认宽度,精度2 %9.2f 宽度9,精度2 %9.f 宽度9,精度0 -
其他flag
占位符 说明 ’+’ 总是输出数值的正负号;对%q(%+q)会生成全部是ASCII字符的输出(通过转义); ’ ‘ 对数值,正数前加空格而负数前加负号;对字符串采用%x或%X时(% x或% X)会给各打印的字节之间加空格 ’-’ 在输出右边填充空白而不是默认的左边(即从默认的右对齐切换为左对齐); ’#’ 八进制数前加0(%#o),十六进制数前加0x(%#x)或0X(%#X),指针去掉前面的0x(%#p)对%q(%#q),对%U(%#U)会输出空格和单引号括起来的go字面值; ‘0’ 使用0而不是空格填充,对于数值类型会把填充的0放在正负号后面; package main import "fmt" func main() { fmt.Print("在终端打印该信息。") //print可以输出任何类型,任何数量的值 na := "沙河小王子" fmt.Printf("我是:%s\n", na) //printf支持格式化输出,即前面用字符串,里面使用占位符来输出后面的内容 fmt.Println("在终端打印单独一行显示") //相比print就是多一个换行符 m1 := make(map[string]int, 1) m1["卡卡"] = 100 fmt.Printf("%v\n", m1) fmt.Printf("%#v\n", m1) //添加#号后打印出来的信息更加详细 fmt.Printf("%d%%\n", 100) //使用%%则可以打印出% //字符 fmt.Printf("%q\n", 65) //输出对应的字符 //复数和浮点数 fmt.Printf("%b\n", 3.1415926) //无小数部分二进制指数的科学计数法 //字符串 fmt.Printf("%q\n", "卡卡") //输出带双引号的字符串的值 n := 12.34 fmt.Printf("%f\n", n) fmt.Printf("%9f\n", n) //宽度为9 fmt.Printf("%.2f\n", n) //精度为2 fmt.Printf("%9.2f\n", n) //宽度为9精度为2,差的宽度用空字符表示 fmt.Printf("%9.f\n", n) //宽度为9精度为0,在前面用空字符占位 //获取用户的输入 var ( name string age int married bool ) //Scan读取空白符分割的的值,换行符视为空白符,读取的个数少于提供参数会报错 // fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married) // fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married) //Scanf采用格式化的语句,必须按照格式化指定的格式去读取空白符分隔的值保存给参数 //多个参数要注意用空格分开 fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married) fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married) //Scanln类似Scan,它在遇到换行时才停止扫描。最后一个数据后面必须有换行或者到达结束位置 fmt.Scanln(&name, &age, &married) fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married) }