Serialization Golang:打印源代码中显示的结构

Serialization Golang:打印源代码中显示的结构,serialization,go,struct,code-generation,pretty-print,Serialization,Go,Struct,Code Generation,Pretty Print,类似于但不完全相同 我正在做一些代码生成,从go内部生成.go文件。我有一个结构,我想生成它的文本表示,这样我就可以将它作为文本插入生成的代码中 因此,如果我有myVal:=SomeStruct{foo:1,bar:2},我想得到字符串“SomeStruct{foo:1,bar:2}” 这在Go中是否可行?来自fmt软件包: 在从输出中删除包标识符(main.,在本例中)后,这是内置格式的最佳选择 type T struct { A string B []byte } fmt.

类似于但不完全相同

我正在做一些代码生成,从go内部生成.go文件。我有一个结构,我想生成它的文本表示,这样我就可以将它作为文本插入生成的代码中

因此,如果我有
myVal:=SomeStruct{foo:1,bar:2}
,我想得到字符串
“SomeStruct{foo:1,bar:2}”


这在Go中是否可行?

来自
fmt
软件包:

在从输出中删除包标识符(
main.
,在本例中)后,这是内置格式的最佳选择

type T struct {
    A string
    B []byte
}

fmt.Printf("%#v\n", &T{A: "hello", B: []byte("world")})

// out
// &main.T{A:"hello", B:[]uint8{0x77, 0x6f, 0x72, 0x6c, 0x64}}

我试过这个,但是当我得到
输入Foo字符串
{field:Foo(“Bar”)}
时,它只将这个打印到
{field:Bar}
。有什么解决方法吗?@jmite:结构中的
字段
的类型是什么?它的类型是
Foo
@jmite:那么类型转换是多余的,因为字符串文字可以分配给
Foo
类型。@jmite:这仍然不能做任何事情,嵌套指针只会被打印为带有类型的
%p
,而分配给接口的值将只显示底层类型。如果需要更详细的输出,则需要手动格式化。
type T struct {
    A string
    B []byte
}

fmt.Printf("%#v\n", &T{A: "hello", B: []byte("world")})

// out
// &main.T{A:"hello", B:[]uint8{0x77, 0x6f, 0x72, 0x6c, 0x64}}