Serialization Golang:打印源代码中显示的结构
类似于但不完全相同 我正在做一些代码生成,从go内部生成.go文件。我有一个结构,我想生成它的文本表示,这样我就可以将它作为文本插入生成的代码中 因此,如果我有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.
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}}