spew - 更直观地打印变量

本文介绍了go-spew,一个用于在Go语言中提供更直观变量查看的库,包括基础类型、结构体、切片的打印示例,以及如何在Web应用中使用它进行调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

除了 spew,我们当然也可以直接选择通过 IDE 的 debug 功能来调试。

spew

go-spew 是一个帮助开发者更直观地打印变量的工具.

通过 fmt.Print 系列方法打印变量或者结构体、数组的时候,我们看到的信息其实是很不直观的,而借助 go-spew 可以非常直观地看到打印变量的信息,比如类型、结构体字段等。

安装

go get -u github.com/davecgh/go-spew/spew

示例

  1. 打印基础类型
a := 1
fmt.Println(a)
spew.Dump(a)

输出:

1
(int) 1   // 比 fmt 的输出多了类型信息
  1. 打印结构体
p := Person{
    Name: "spew",
    age:  23,
}
fmt.Println(p)
spew.Dump(p)

输出:

{spew 23}
(main.Person) {  // 比 fmt 的输出多了类型、字段名、字段类型、字符串类型的长度等信息,另外还有缩进
 Name: (string) (len=4) "spew",
 age: (int) 23
}
  1. 打印切片
arr := [...]int{1, 2, 3}
fmt.Println(arr)
spew.Dump(arr)

输出:

[1 2 3]
([3]int) (len=3 cap=3) {  // 比 fmt 的输出多了长度、类型、容量等信息,而且输出的格式是带缩进的
 (int) 1,
 (int) 2,
 (int) 3
}
  1. 打印到 Writer

someWriter 是任何实现了 io.Writer 的对象。

spew.Fdump(someWriter, myVar1, myVar2, ...)
  1. 获取格式化的字符串

下面这个 Sdump 会返回一个字符串而不是直接输出。

str := spew.Sdump(myVar1, myVar2, ...)

调试 Web 应用

使用 Sdump 来获取结构体的所有详细信息。

func handler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "text/html")
    fmt.Fprintf(w, "Hi there, %s!", r.URL.Path[1:])
    fmt.Fprintf(w, "<!--\n" + html.EscapeString(spew.Sdump(w)) + "\n-->")
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白如意i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值