go printf小技巧

  • 晓道
  • 更新于 2022-01-27 22:25
  • 阅读 2606

go printf小技巧

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

点赞 2
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
晓道
晓道
0xdD09...9161
技术交流:https://t.me/realDAO