go - 打印时如何取消引用字段?

标签 go printf

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}

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

{{“我想看看这里有什么”}}

这主要是为了调试目的,如果我有一个包含 30 个指针字段的结构,我不想为这 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 - 打印时如何取消引用字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50453253/

相关文章:

java - 格式化字符串输出

java 使用 printf 处理数组

C -\r 在带有 nanosleep() 的 printf() 中不起作用

c - printf(0, "%d", num) 中的 0 有什么作用?

unit-testing - 如何在排除某些文件的情况下测试包?

postgresql - PostgreSQL使Go建立的连接保持开放

macos - 戈朗 :alpine docker container on macOS throws "invalid symbol version for go.string" when importing gin-gonic/gin

angular - 使用 angular web 应用程序调用 mongo/golang db 时被 CORS 策略错误阻止

postgresql - 创建或更新未在GORM中返回更新后的值

c - 数组只打印零