Skip to content

string format

常见格式

格式含义
%sstring
%dint
%ffloat
%v任意值
%T类型
%tbool
%p指针

fmt.Sprintf,返回字符串,不输出。

fmt.Printf,直接打印到终端(stdout)。

fmt.Fprintf,指定 writer。如:

go
fmt.Fprintf(os.Stdout, "hello %s\n", "Tom")
       +------------+
       |  Fprintf   |
       +------------+
        /          \
       /            \
Printf(stdout)   Sprintf(string)

fmt.Sprintf

v

go
fmt.Sprintf("%v", 10)     // 10
fmt.Sprintf("%v", true)   // true
fmt.Sprintf("%v", []int{1,2}) // [1 2]

fmt.Sprintf("%v", user) // {Tom 18}
fmt.Sprintf("%+v", user) // {Name:Tom Age:18}

float

go
fmt.Sprintf("%.2f", 3.14159) // 3.14

宽度控制

go
fmt.Sprintf("%5d", 10)

参数位置

go
fmt.Sprintf("%[2]d %[1]d", 10, 20) // 20 10

类型

go
fmt.Sprintf("%T", value)

%w 用于 error wrap

go
fmt.Errorf("create user failed: %w", err)

更好的性能

go
var b strings.Builder

b.WriteString("user=")
b.WriteString(name)

s := b.String()