Golang:打印结构,因为它会出现在源代码中

Golang: print struct as it would appear in source code

this question 相似,但不完全相同。

我正在做一些代码生成,从 Go 中生成 .go 文件。我有一个结构,我想生成它的文本表示,以便我可以将它作为文字插入到生成的代码中。

所以,如果我有 myVal := SomeStruct{foo : 1, bar : 2},我想得到字符串 "SomeStruct{foo : 1, bar : 2}"

这在 Go 中可行吗?

来自 fmt 包:

%#v   a Go-syntax representation of the value

在从输出中删除包标识符(本例中为 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}}

Run