fmt包的使用
fmt包的使用
功能:fmt包实现了类似C语言printf和scanf的格式化I/O。格式化动作('verb')源自C语言但更简单
函数系列
-
前缀
标准:表示从标准输入读取,或者输出到标准输出
F前缀:表示从指定的io.Reader接口读取文本,或者写入指定的io.Writer接口类型对象
S前缀:表示从文本参数读取字符串,或者生成的字符串并返回该字符串 -
后缀
f后缀:格式化
ln后缀:使用默认格式化
1、打印格式
2、Stringer 接口
实现了Stringer接口的类型(即有String方法),定义了该类型值的原始显示。当采用任何接受字符的verb(%v %s %q %x %X)动作格式化一个操作数时,或者被不使用格式字符串如Print函数打印操作数时,会调用String方法来生成输出的文本
3、GoStringer 接口
实现了GoStringer接口的类型(即有GoString方法),定义了该类型值的go语法表示。当采用verb %#v格式化一个操作数时,会调用GoString方法来生成输出的文本。
4、Formatter 接口
实现了Formatter接口的类型可以定制自己的格式化输出。Format方法的实现内部可以调用Sprint或Fprint等函数来生成自身的输出
5、Scanner 和 ScanState 接口
当Scan、Scanf、Scanln或类似函数接受实现了Scanner接口的类型(其Scan方法的receiver必须是指针,该方法从输入读取该类型值的字符串表示并将结果写入receiver)作为参数时,会调用其Scan方法进行定制的扫描
ScanState代表一个将传递给Scanner接口的Scan方法的扫描环境。 Scan函数中,可以进行一次一个rune的扫描,或者使用Token方法获得下一个token(比如空白分隔的token)
6、Scanning
一系列类似的函数可以扫描格式化文本以生成值
a、Scan、Scanf和Scanln从标准输入os.Stdin读取文本
b、Fscan、Fscanf、Fscanln从指定的io.Reader接口读取文本
c、Sscan、Sscanf、Sscanln从一个参数字符串读取文本,会在读取到换行时
7、scan系列函数
func Scan(a ...interface{}) (n int, err error) //Scan从标准输入扫描文本,将成功读取的空白分隔的值保存进成功传递给本函数的参数。换行视为空白。返回成功扫描的条目个数和遇到的任何错误。如果读取的条目比提供的参数少,会返回一个错误报告原因
func Scanf(format string, a ...interface{}) (n int, err error) //Scanf从标准输入扫描文本,根据format 参数指定的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数。返回成功扫描的条目个数和遇到的任何错误
func Scanln(a ...interface{}) (n int, err error) //Scanln类似Scan,但会在换行时才停止扫描。最后一个条目后必须有换行或者到达结束位置。
func Fscan(r io.Reader, a ...interface{}) (n int, err error) //Fscan从r扫描文本,将成功读取的空白分隔的值保存进成功传递给本函数的参数。换行视为空白。返回成功扫描的条目个数和遇到的任何错误。如果读取的条目比提供的参数少,会返回一个错误报告原因
func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error) //Fscanf从r扫描文本,根据format 参数指定的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数。返回成功扫描的条目个数和遇到的任何错误
func Fscanln(r io.Reader, a ...interface{}) (n int, err error) //Fscanln类似Fscan,但会在换行时才停止扫描。最后一个条目后必须有换行或者到达结束位置
func Sscan(str string, a ...interface{}) (n int, err error) //Sscan从字符串str扫描文本,将成功读取的空白分隔的值保存进成功传递给本函数的参数。换行视为空白。返回成功扫描的条目个数和遇到的任何错误。如果读取的条目比提供的参数少,会返回一个错误报告原因
func Sscanf(str string, format string, a ...interface{}) (n int, err error) //Sscanf从字符串str扫描文本,根据format 参数指定的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数。返回成功扫描的条目个数和遇到的任何错误
func Scanln(a ...interface{}) (n int, err error) //Scanln类似Scan,但会在换行时才停止扫描。最后一个条目后必须有换行或者到达结束位置。
8、print系列函数
func Print(a ...interface{}) (n int, err error) //Print采用默认格式将其参数格式化并写入标准输出。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格。返回写入的字节数和遇到的任何错误
func Printf(format string, a ...interface{}) (n int, err error) //Printf根据format参数生成格式化的字符串并写入标准输出。返回写入的字节数和遇到的任何错误
func Println(a ...interface{}) (n int, err error) //rintln采用默认格式将其参数格式化并写入标准输出。总是会在相邻参数的输出之间添加空格并在输出结束后添加换行符。返回写入的字节数和遇到的任何错误
func Fprint(w io.Writer, a ...interface{}) (n int, err error) //Fprint采用默认格式将其参数格式化并写入w。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格。返回写入的字节数和遇到的任何错误
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) //Fprintf根据format参数生成格式化的字符串并写入w。返回写入的字节数和遇到的任何错误
func Fprintln(w io.Writer, a ...interface{}) (n int, err error) //Fprintln采用默认格式将其参数格式化并写入w。总是会在相邻参数的输出之间添加空格并在输出结束后添加换行符。返回写入的字节数和遇到的任何错误
func Sprint(a ...interface{}) string //Sprint采用默认格式将其参数格式化,串联所有输出生成并返回一个字符串。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格
func Sprintf(format string, a ...interface{}) string //Sprintf根据format参数生成格式化的字符串并返回该字符串
func Sprintln(a ...interface{}) string //Sprintln采用默认格式将其参数格式化,串联所有输出生成并返回一个字符串。总是会在相邻参数的输出之间添加空格并在输出结束后添加换行符