http://play.golang.org/p/joEmjQdMaS

package main

import "fmt"

type SomeStruct struct {
    somePointer *somePointer
}
type somePointer struct {
    field string
}

func main() {
    fmt.Println(SomeStruct{&somePointer{"I want to see what is in here"}})
}

这将打印一个内存地址,如下面的{0x10500168}

有没有办法把它打印出来:

{{"I want to see what is in here"}}

这主要是为了调试,如果我有一个包含30个指针字段的 struct ,我不想对30个字段中的每一个都进行println来查看其中的内容.

推荐答案

有一个很棒的包裹叫做go-spew.这正是你想要的.

package main

import (
  "github.com/davecgh/go-spew/spew"
)

type (
  SomeStruct struct {
    Field1 string
    Field2 int
    Field3 *somePointer
  }
  somePointer struct {
    field string
  }
)

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"
 })
}

Go相关问答推荐

如何在定制普罗米修斯出口商中测试动态计量注册?

在GO中创建[]字符串类型的变量

可以';t从主机连接到ScyllaDB容器

从带有嵌套括号的字符串中提取值

如何测试 Zerolog 记录器引发类型错误的日志(log)事件?

如何从Go项目连接Microsoft Access数据库?

如何将 DirName 和 serial 添加到 X509v3 Authority Key Identifier

更改多对多连接表的名称

如何以干净的方式在中间件中注入 repo 或服务?

使用 Grafana alert 在几分钟内重复alert

为什么当我忽略 template.New() 程序可以成功运行?

Golang并发写入多个文件

Go 泛型:自引用接口约束

try 运行 docker-compose up -d 时出现错误

将 []float64 像素切片转换为图像

Golang泛型在用作 map 元素时不起作用

将 Golang Gin 与 AWS Lambda 和无服务器与代理路径一起使用

如何从 Go 1.18 中的单个方法返回两种不同的具体类型?

如何使用 context.WithCancel 启动和停止每个会话的心跳?

Golang 泛型同时具有接口和实现