Println输出


Print系列函数会将内容输出到系统的标准输出,区别在于Print函数直接输出内容,Printf函数支持格式化输出字符串,Println函数会在输出内容的结尾添加一个换行符。


Fprint


Fprint系列函数会将内容输出到一个io.Writer接口类型的变量w中,我们通常用这个函数往文件中写入内容。


实例:


Sprint系列函数会把传入的数据生成并返回一个字符串。


实例:



Errorf


Errorf函数根据format参数生成格式化字符串并返回一个包含该字符串的错误。

通常使用这种方式来自定义错误类型。



printf


支持各种占位符。



默认格式



+总打印数值的正负号;对于%q(%+q)保证只输出ASCII编码的字符。


  • 左对齐

备用格式:为八进制添加前导 0(%#o),为十六进制添加前导 0x(%#x)或0X(%#X),为 %p(%#p)去掉前导 0x;对于 %q,若 strconv.CanBackquote 返回 true,就会打印原始(即反引号围绕的)字符串;如果是可打印字符,%U(%#U)会写出该字符的Unicode编码形式(如字符 x 会被打印成 U+0078 'x')。


' ' (空格)为数值中省略的正负号留出空白(% d);以十六进制(% x, % X)打印字符串或切片时,在字节之间用空格隔开


0 填充前导的0而非空格;对于数字,这会将填充移到正负号之后



宽度标识符


宽度通过一个紧跟在百分号后面的十进制数指定,如果未指定宽度,则表示值时除必需之外不作填充。精度通过(可选的)宽度后跟点号后跟的十进制数指定。如果未指定精度,会使用默认精度;如果点号后没有跟数字,表示精度为0。


占位符 说明

%f 默认宽度,默认精度

%9f 宽度9,默认精度

%.2f 默认宽度,精度2

%9.2f 宽度9,精度2

%9.f 宽度9,精度0


获取输出


Go语言fmt包下有fmt.Scan、fmt.Scanf、fmt.Scanln三个函数,可以在程序运行过程中从标准输入获取用户的输入。


fmt.Scan


Scan从标准输入扫描文本,读取由空白符分隔的值保存到传递给本函数的参数中,换行符视为空白符。


本函数返回成功扫描的数据个数和遇到的任何错误。如果读取的数据个数比提供的参数少,会返回一个错误报告原因。


fmt.Scan从标准输入中扫描用户输入的数据,将以空白符分隔的数据分别存入指定的参数。


fmt.Scanf


Scanf从标准输入扫描文本,根据format参数指定的格式去读取由空白符分隔的值保存到传递给本函数的参数中。


本函数返回成功扫描的数据个数和遇到的任何错误。


fmt.Scanf不同于fmt.Scan简单的以空格作为输入数据的分隔符,fmt.Scanf为输入数据指定了具体的输入内容格式,只有按照格式输入数据才会被扫描并存入对应变量。


fmt.Scanln


Scanln类似Scan,它在遇到换行时才停止扫描。最后一个数据后面必须有换行或者到达结束位置。


本函数返回成功扫描的数据个数和遇到的任何错误。


fmt.Scanln遇到回车就结束扫描了,这个比较常用


几种输入方式的区别



bufio.NewReader



Fscan系列


fmt.Scan、fmt.Scanf、fmt.Scanln三个函数,只不过它们不是从标准输入中读取数据而是从io.Reader中读取数据。


Sscan系列


fmt.Scan、fmt.Scanf、fmt.Scanln三个函数,只不过它们不是从标准输入中读取数据而是从指定字符串中读取数据。