取消引用字段进行调试
打印包含指针的 Go 结构体时,输出通常显示内存地址而不是实际值。为了改进调试,最好打印取消引用的值。
解决方案:使用 go-spew 包
go-spew 包提供了一个方便的解决方案。它可用于转储结构体,包括作为指针的字段,并显示取消引用的值。
示例:
考虑以下 Go 结构体:
package main import ( "github.com/davecgh/go-spew/spew" ) type ( SomeStruct struct { Field1 string Field2 int Field3 *somePointer } somePointer struct { field string } )
在 main 函数中,创建 SomeStruct 的实例并将其传递给 spew.Dump:
func main() { s := SomeStruct{ Field1: "Yahoo", Field2: 500, Field3: &somePointer{"I want to see what is in here"}, } spew.Dump(s) }
这将打印以下输出:
(main.SomeStruct) { Field1: (string) "Yahoo", Field2: (int) 500, Field3: (*main.somePointer)(0x2102a7230)({ field: (string) "I want to see what is in here" }) }
所需的解除引用值(“我想看看这里有什么”)现在在 Field3 字段下可见。这允许在调试期间轻松检查复杂结构中的指针。
以上是如何打印 Go 结构中指针的解引用值以进行有效调试?的详细内容。更多信息请关注PHP中文网其他相关文章!