1.`Sprintf` 则格式化并返回一个字 符串而不带任何输出。
s := fmt.Sprintf(
"是字符串 %s "
,
"string"
)
2.
fmt.Println(s)
// 是字符串 %s 对应 是字符串 string
3.可以使用 `Fprintf` 来格式化并输出
fmt.Fprintf(os.Stderr,
"格式化 %s\n"
,
"error"
)
顺带说一下格式化的符号:
/*
%v 输出结构体 {10 30}
%+v 输出结构体显示字段名 {one:10 tow:30}
%#v 输出结构体源代码片段 main.Point{one:10, tow:30}
%T 输出值的类型 main.Point
%t 输出格式化布尔值 true
%d`输出标准的十进制格式化 100
%b`输出标准的二进制格式化 99 对应 1100011
%c`输出定整数的对应字符 99 对应 c
%x`输出十六进制编码 99 对应 63
%f`输出十进制格式化 99 对应 63
%e`输出科学技科学记数法表示形式 123400000.0 对应 1.234000e+08
%E`输出科学技科学记数法表示形式 123400000.0 对应 1.234000e+08
%s 进行基本的字符串输出 "\"string\"" 对应 "string"
%q 源代码中那样带有双引号的输出 "\"string\"" 对应 "\"string\""
%p 输出一个指针的值 &jgt 对应 0xc00004a090
% 后面使用数字来控制输出宽度 默认结果使用右对齐并且通过空格来填充空白部分
%2.2f 指定浮点型的输出宽度 1.2 对应 1.20
%*2.2f 指定浮点型的输出宽度对齐,使用 `-` 标志 1.2 对应 *1.20
*/
jgt := Point{10,30}
fmt.Printf(
"%v\n"
,jgt)
// {10 30}
fmt.Printf(
"%+v\n"
,jgt)
// {one:10 tow:30}
fmt.Printf(
"%#v\n"
,jgt)
// main.Point{one:10, tow:30}
fmt.Printf(
"%T\n"
,jgt)
// main.Point
fmt.Printf(
"%t\n"
,true)
// true
fmt.Printf(
"%d\n"
,100)
// 100
fmt.Printf(
"%b\n"
,99)
// 99 对应 1100011
fmt.Printf(
"%c\n"
,99)
// 99 对应 c
fmt.Printf(
"%x\n"
,99)
// 99 对应 63
fmt.Printf(
"%f\n"
,99.9)
// 99.9 对应 99.900000
fmt.Printf(
"%e\n"
,123400000.0)
// 123400000.0 对应 1.234000e+08
fmt.Printf(
"%E\n"
,123400000.0)
// 123400000.0 对应 1.234000e+08
fmt.Printf(
"%s\n"
,
"\"string\""
)
// "\"string\"" 对应 "string"
fmt.Printf(
"%q\n"
,
"\"string\""
)
// "\"string\"" 对应 "string"
fmt.Printf(
"%p\n"
,&jgt)
// &jgt 对应 0xc00004a090
fmt.Printf(
"%6d\n"
,8)
// &jgt 对应 0xc00004a090
fmt.Printf(
"%2.2f\n"
,1.2 )
// 1.2 对应 1.20
fmt.Printf(
"*%2.2f\n"
,1.2 )
// 1.2 对应 *1.20