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"}})
}
Run Code Online (Sandbox Code Playgroud)
这会打印出这样的内存地址 {0x10500168}
有没有办法让它打印:
{{"I want to see what is in here"}}
这主要是出于调试目的,如果我有一个包含30个指针字段的结构,我不想为30个字段中的每个字段执行println以查看其中的内容.
Cor*_*Nou 17
有一个叫做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)
}
Run Code Online (Sandbox Code Playgroud)
会给你这个输出:
(main.SomeStruct) {
Field1: (string) "Yahoo",
Field2: (int) 500,
Field3: (*main.somePointer)(0x2102a7230)({
field: (string) "I want to see what is in here"
})
}
Run Code Online (Sandbox Code Playgroud)