2016-12-05 45 views
2

this question類似,但不完全相同。Golang:打印出現在源代碼中的結構

我正在做一些代碼生成,在Go中製作.go文件。我有一個結構,我想生成它的文本表示,以便我可以將它作爲文字插入到生成的代碼中。

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

Go可能嗎?

回答

5

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

+0

我想這一點,但是當我有'Foo類型string'和'{場:美孚( 「酒吧」)}',它只是打印這'{場「酒吧「}'。任何解決方法? – jmite

+0

@jmite:struct中的field是什麼類型的? – JimB

+0

它的類型'Foo' – jmite