Go中的print和scan

405 阅读3分钟

这是我参与8月更文挑战的第27天,活动详情查看:8月更文挑战

常用print方法

 func Print(a ...interface{}) (n int, err error)
 func Sprint(a ...interface{}) string
 func Fprint(w io.Writer, a ...interface{}) (n int, err error)
 ​
 func Printf(format string, a ...interface{}) (n int, err error) 
 func Sprintf(format string, a ...interface{}) string
 func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
 ​
 func Sprintln(a ...interface{}) string
 func Println(a ...interface{}) (n int, err error)
 func Fprintln(w io.Writer, a ...interface{}) (n int, err error)

print为核心关键字

print, Sprint, Fprint, 输出内容不会换行, 不能格式化字符串

Println, Sprintln, Fprintln, 输出内容换行, 不能格式化字符串

Printf, Sprintf, Fprintf, 输出内容不会换行, 可以格式化字符串

print, Println, Printf, 输出内容到控制台

Sprint, Sprintln, Sprintf, 输出内容为字符串

Fprint, Fprintln, Fprintf, 输出内容到文件

前缀为空, 前缀为S, 前缀为F, 代表了输出内容的位置

后缀为空, 后缀为S, 后缀为F, 代表了是否有换行, 是否可以格式化字符串

常用scan方法

 func Scan(a ...interface{}) (n int, err error)
 func Scanln(a ...interface{}) (n int, err error)
 func Scanf(format string, a ...interface{}) (n int, err error)
 ​
 func Sscan(str string, a ...interface{}) (n int, err error)
 func Sscanln(str string, a ...interface{}) (n int, err error)
 func Sscanf(str string, format string, a ...interface{}) (n int, err error)
 ​
 func Fscan(r io.Reader, a ...interface{}) (n int, err error)
 func Fscanln(r io.Reader, a ...interface{}) (n int, err error)
 func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)

scan为核心关键字

Scan, Fscan, Sscan, 在读取内容的时候不会关注换行

Scanln, Fscanln, Sscanln, 在读取内容的时候, 到换行结束

Scanf, Fscanf, Sscanf, 以格式化的方式读取内容

Scan, Scanln, Scanf, 从控制台读取内容

Sscan, Scanln, Sscanf, 从指定字符串中读取内容

Fscan, Fscanln, Fscanf, 从文中中读取内容

前缀为空, 前缀为S, 前缀为F, 代表了读取内容的位置

后缀为空, 后缀为S, 后缀为F, 代表了是读取内容时是否关注换行, 是否可以格式化字符串

通用格式化

%v: 格式化所有的变量值

%+v, 在打印结构体时, 会加上字段名

%#v, 在打印结构体时, 不单会加上字段名, 还会加上结构体类型名

%T, 格式化变量的类型

对于整数的格式化

%b, 将整数格式化为二进制

%o, 将整数格式化为八进制

%d, 将整数格式化为十进制

%x, 将整数格式化为十六进制, 用小写字母表示

%X, 将整数格式化为十六进制, 用大写字母表示

对于浮点数的格式化

%e, %E, 将浮点数采用科学计数法表示

%f, %F, 将浮点数采用带小数部分的表示方法

%g, %G 根据实际情况决定采用何种方式格式化浮点数

对于字符串的格式化

%s, 用于格式化字符串或字节切片

对于指针的格式化

%p, 用来格式化指针类型的变量为以0x为前缀的十六进制地址

指定宽度的格式化

%f, 默认不指定宽度和精度

%10f, 指定宽度为10位, 宽度不够在数值左侧用空格填充

%.10f, 指定精度为10位, 宽度不够在小数部分右侧用0填充

%10.2f, 指定宽度为10位, 精度为2位, 宽度不够在数值左侧用空格填充

%10.2f, 指定宽度为10位, 精度为2位, 宽度不够在数值左侧用0填充

%d, 默认不指定宽度

%5d, 指定宽度为5, 宽度不够在数值左侧用空格填充

%05d, 指定宽度为5, 宽度不够在数值左侧用0填充