输出
Print 系列输出内容到终端
Fprint系列输出内容到一个io.Writer接口类中,通常用于写文件
Sprint系列把传入的数据生成并返回一个字符串
\w?[Pp]Print 直接输出内容,不附带换行,不支持格式化
\w?[Pp]rintln 自动附带换行,不支持格式化
\w?[Pp]rintf 格式化输出字符串
Errorf
函数根据format参数生成格式化字符并返回一个包含该字符串的错误.
Go1.13版本为fmt.Errorf
函数新加了一个%w
占位符用来生成一个可以包裹Error的Wrapping Error。
占位符 |
说明 |
%v |
值的默认格式表示 |
%+v |
类似%v,但输出结构体时会添加字段名 |
%#v |
值的Go语法表示 |
%T |
打印值的类型 |
%% |
百分号 |
占位符 |
说明 |
%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格式(以获得更简洁、准确的输出) |
占位符 |
说明 |
%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 |
占位符 |
说明 |
’+’ |
总是输出数值的正负号;对%q(%+q)会生成全部是ASCII字符的输出(通过转义); |
’ ‘ |
对数值,正数前加空格而负数前加负号;对字符串采用%x或%X时(% x或% X)会给各打印的字节之间加空格 |
’-’ |
在输出右边填充空白而不是默认的左边(即从默认的右对齐切换为左对齐); |
’#’ |
八进制数前加0(%#o),十六进制数前加0x(%#x)或0X(%#X),指针去掉前面的0x(%#p)对%q(%#q),对%U(%#U)会输出空格和单引号括起来的go字面值; |
‘0’ |
使用0而不是空格填充,对于数值类型会把填充的0放在正负号后面; |
输入
Scan 标准输出读取数据
Fscan 从io.Reader
中读取数据
Sscan 从指定字符串中读取数据
\w?[Ss]can 从标准输入扫描文本,读取由空白符分割的值保存到传递给本函数的参数中,换行符视为空白符.
\w?[Ss]canf 从标准输入扫描文本,根据format参数指定的格式去读取由空白符分隔的值保存到传递本函数的参数中
\w?[Ss]canln 类似Scan,它在遇到换行时才停止扫描。最后一个数据后面必须有换行或者到达结束位置。
bufio.NewReader
有时候我们想完整获取输入内容,而输入的内容可能包含空格、这种情况下可以使用bufio
包来实现
1package main
2
3import (
4 "bufio"
5 "fmt"
6 "os"
7 "strings"
8)
9
10func main() {
11 reader := bufio.NewReader(os.Stdin) // 标准输出生成对象
12 fmt.Print("请输入内容:")
13 text,_ := reader.ReadString('\n') // 读取回车换行
14 text = strings.TrimSpace(text) // strings 方法 去空格 去换行符
15 fmt.Printf("%v \n",text) //打印输出
16}
1%d 十进制整数
2%x, %o, %b 十六进制,八进制,二进制整数。
3%f, %g, %e 浮点数: 3.141593 3.141592653589793 3.141593e+00
4%t 布尔:true或false
5%c 字符(rune) (Unicode码点)
6%s 字符串
7%q 带双引号的字符串"abc"或带单引号的字符'c'
8%v 变量的自然形式(natural format)
9%T 变量的类型
10%% 字面上的百分号标志(无操作数)