go语言里面,三种打印结构体的方式,原来没有注意,今天觉得%v看起来感觉不好,认真看了下文档,写一篇记录一下。
1,%v 仅打印结构体的值
2,%+v 打印结构体的字段名+字段值
3,%#v 在2的基础上加了结构体名
上代码:
package main
import "fmt"
type employee struct {
name string
age int
salary int
}
func main() {
emp := employee{name: "Sam", age: 31, salary: 2000}
fmt.Printf("%v\n", emp)
fmt.Printf("%+v\n", emp)
fmt.Printf("%#v\n", emp)
//{Sam 31 2000}
//{name:Sam age:31 salary:2000}
//main.employee{name:"Sam", age:31, salary:2000}
}
再给大家推荐一个字符串格式化的库,
lwahlmeier/pyfmt: Golang implementation of PEP3101 (github.com)
主要我写习惯了python的格式化方式,在go里,没有python这种f字符串挺难受,这个库就可以实现f字符串的功能。
使用方法,直接代码吧:
import (
"fmt"
py "github.com/lwahlmeier/pyfmt"
)
type employee struct {
name string
age int
salary int
}
func main() {
emp := employee{name: "Sam", age: 31, salary: 2000}
fmt.Println(py.Must("{:s}", emp))
fmt.Println(py.Must("{:r}{0:t}", emp))
fmt.Println(py.Must("{0.name} {0.age}", emp))
//{name:Sam age:31 salary:2000}
//main.employee{name:"Sam", age:31, salary:2000}main.employee
//Sam 31
}
1,{:s} 打印结构体,字段和值
2, {:r} 打印结构体名,{:t}打印类的类型
3, {0.name} 0表示一个,.后接的字段名
后面这个库,更详细的看文档吧,前面有github地址。
参考文章
Pretty print struct variables in Go (Golang) - Welcome To Golang By Example
Top comments (0)