Go语言中几种输出方式及占位符

1,351 阅读2分钟

Print、Println、Printf、Sprintf、Fprintf都是golang的fmt包中的公共方法

Print:在控制台输出单一变量。
    fmt.Print(variable)
Println:在控制台输出单一变量,并换行。
    fmt.Println(variable)
Printf:在控制台输出format过后的字符串。
    fmt.Printf("%d", decVar)
Sprintf:返回一个format过后的字符串,并不输出。
    s := fmt.Sprintf("a %s", "string")
Fprintf:来格式化并输出到 io.Writers 而不是 os.Stdout。
    fmt.Fprintf(os.Stderr, “an %s\n”, “error”)

几种常用的占位符:

%b     binary,二进制表示 
%c     相应Unicode码点所表示的字符 
%d     decimal,十进制表示 
%e     科学计数法,例如 -1234.456e+78 
%E     科学计数法,例如 -1234.456E+78 
%f     有小数点而无指数,例如 123.456 
%g     根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出 
%G     根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出
%o     octonary,八进制表示 
%q     quote,单引号围绕的字符字面值,由Go语法安全地转义 
%s     字符串或切片的无解译字节
%T     Type,输出值的类型
%t     输出bool值,true or false
%U     Unicode格式:U+1234,等同于 "U+%04X"
%v     variable,只输出变量的值
%+v    输出变量的KV结构
%#v    相应值的Go语法表示
%x     Hexa,十六进制表示,字母形式为小写 a-f 
%X     Hexa,十六进制表示,字母形式为大写 A-F 
%%     输出一个百分号

在Go语言下,%v在打印不同类型的变量时,默认执行的格式:

bool:                    %t 
int, int8 etc.:          %d 
uint, uint8 etc.:        %d, %x if printed with %#v
float32, complex64, etc: %g
string:                  %s
chan:                    %p 
pointer:                 %p

对于不同精度的浮点数:

%f:      default width, default precision 
%9f      width 9, default precision 
%.2f     default width, precision 2 
%9.2f    width 9, precision 2 
%9.f     width 9, precision 0

参数显示占位符

func main() {
    fmt.Printf("%[2]d, %[1]d\n", 11, 22)  //22, 11,先输出第二个值,再输出第一个值
}

TODO: Scanf格式化输出