注册 登录

清河洛

fmt标准库的打印函数

qingheluo2021-09-08清河洛379
fmt标准库是编写代码使用最频繁的库之一,可以使用fmt包的打印函数来查看变量的信息在使用fmt包时,我们可能需要使用以 % 开头的占位符用于格式化字符串占位符通用 %v: 以值的默认格式打印 %+v:类似%v,但输出结构体时会包含字段名 %#v:值的Go语法表示(定义的语法格式) %T: 打印值的类型 %%: 打印百分号本身 布尔值 %t :打印布尔值 指针 %p :打印指针的地址 %#p:打印去掉0x前缀的内存地址 整数 %b:以二进制打印 %d:以十进制打印 %o:不带0的八进制 %#o :带零的八进制 %x:以十六进制打印,使用小写:a-f %X:以十六进制打印,使用大写:...

fmt标准库是编写代码使用最频繁的库之一,可以使用fmt包的打印函数来查看变量的信息

在使用fmt包时,我们可能需要使用以 % 开头的占位符用于格式化字符串

占位符

通用
%v: 以值的默认格式打印
%+v:类似%v,但输出结构体时会包含字段名
%#v:值的Go语法表示(定义的语法格式)
%T: 打印值的类型
%%: 打印百分号本身

布尔值
%t :打印布尔值

指针
%p :打印指针的地址
%#p:打印去掉0x前缀的内存地址

整数
%b:以二进制打印
%d:以十进制打印
%o:不带0的八进制
%#o :带零的八进制
%x:以十六进制打印,使用小写:a-f
%X:以十六进制打印,使用大写:A-F
%#x: 带0x的十六进制
%c:打印unicode码值
%q:单引号括起来字面值
%U:打印对应的Unicode编码,如U+1234
%+q:保证只输出ASCII编码的字符,其他字符以unicode编码输出
%#U:若是可打印字符则打印出来

浮点数
%e:小写e表示的科学计数法
%E:大写E表示的科学计数法
%f:不用指数表示的浮点数
%F:等价于%f
%g:根据实际情况采用%e或%f格式
%G:根据实际情况采用%E或%F格式

字符串
%s:输出字符串表示(string类型或[]byte)
%q:双引号包含的字符串
%#q:用反引号包含的字符串
%x:十六进制,小写字母,每字节两个字符
%X:十六进制,大写字母,每字节两个字符

宽度标识符

%[0-][+]m[.n]占位符:
百分号后面跟0表示用前导0填充(不指定0使用空格填充)直到长度m(小数时含小数点)
如果值的位数大于指定的m,按照实际位数输出
加号(+)表示总是输出数值的正负号
负号(-)表示向右填充,默认向左填充
仅能指定0作为向左填充符号,向右填充只能使用默认的空格,所以0和-不会同时出现
最后的.n表示小数位长度

type Stringer

type Stringer interface {
    String() string
}

实现了Stringer接口的类型,采用字符占位符(%v %s %q %x %X)格式化时,或者直接使用Print函数打印时,会调用String方法来生成输出的文本

type GoStringer

type GoStringer interface {
    GoString() string
}

实现了GoStringer接口的类型,采用 %#v 格式化时,会调用GoString方法来生成输出的文本

包级函数

Printf(format string, a ...interface{}) (n int, err error)
    根据format参数生成格式化的字符串并写入标准输出
    返回写入的字节数和遇到的任何错误

Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
    根据format参数生成格式化的字符串并写入w
    返回写入的字节数和遇到的任何错误

Sprintf(format string, a ...interface{}) string
    根据format参数生成格式化的字符串并返回

Print(a ...interface{}) (n int, err error)
    采用默认格式将其参数格式化并写入标准输出
    如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格
    返回写入的字节数和遇到的任何错误

Fprint(w io.Writer, a ...interface{}) (n int, err error)
    采用默认格式将其参数格式化并写入w
    如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格
    返回写入的字节数和遇到的任何错误。

Sprint(a ...interface{}) string
    采用默认格式将其参数格式化,串联所有输出生成并返回一个字符串
    如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格

Println(a ...interface{}) (n int, err error)
    采用默认格式将其参数格式化并写入标准输出
    总是会在相邻参数的输出之间添加空格并在输出结束后添加换行符
    返回写入的字节数和遇到的任何错误

Fprintln(w io.Writer, a ...interface{}) (n int, err error)
    采用默认格式将其参数格式化并写入w
    总是会在相邻参数的输出之间添加空格并在输出结束后添加换行符
    返回写入的字节数和遇到的任何错误

Sprintln(a ...interface{}) string
    采用默认格式将其参数格式化,串联所有输出生成并返回一个字符串
    总是会在相邻参数的输出之间添加空格并在输出结束后添加换行符

Errorf(format string, a ...interface{}) error
    根据format参数生成格式化字符串并返回一个包含该字符串的错误

Scanf(format string, a ...interface{}) (n int, err error)
    从标准输入扫描文本,根据format参数指定的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数
    返回成功扫描的条目个数和遇到的任何错误

Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)
    从r扫描文本,根据format参数指定的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数
    返回成功扫描的条目个数和遇到的任何错误

Sscanf(str string, format string, a ...interface{}) (n int, err error)
    从字符串str扫描文本,根据format参数指定的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数
    返回成功扫描的条目个数和遇到的任何错误

Scan(a ...interface{}) (n int, err error)
    从标准输入扫描文本,将成功读取的空白分隔的值保存进成功传递给本函数的参数
    换行视为空白
    返回成功扫描的条目个数和遇到的任何错误
    如果读取的条目比提供的参数少,会返回一个错误报告原因

Fscan(r io.Reader, a ...interface{}) (n int, err error)
    从r扫描文本,将成功读取的空白分隔的值保存进成功传递给本函数的参数
    换行视为空白
    返回成功扫描的条目个数和遇到的任何错误
    如果读取的条目比提供的参数少,会返回一个错误报告原因

Sscan(str string, a ...interface{}) (n int, err error)
    从字符串str扫描文本,将成功读取的空白分隔的值保存进成功传递给本函数的参数
    换行视为空白
    返回成功扫描的条目个数和遇到的任何错误
    如果读取的条目比提供的参数少,会返回一个错误报告原因

Scanln(a ...interface{}) (n int, err error)
    类似Scan,但会在换行时停止扫描
    最后一个条目后必须有换行或者到达结束位置

Fscanln(r io.Reader, a ...interface{}) (n int, err error)
    类似Fscan,但会在换行时停止扫描
    最后一个条目后必须有换行或者到达结束位置

Sscanln(str string, a ...interface{}) (n int, err error)
    类似Sscan,但会在换行时停止扫描
    最后一个条目后必须有换行或者到达结束位置


网址导航