string format
常见格式
| 格式 | 含义 |
|---|---|
| %s | string |
| %d | int |
| %f | float |
| %v | 任意值 |
| %T | 类型 |
| %t | bool |
| %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()