2016-12-05 14 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'と'持っているとき: '{フィールドはFoo( "バー")}、それだけで' {フィールドにこれを出力します。 "バー "}"。このための回避策はありますか? – jmite

+0

@jmite:構造体の 'field'の型は何ですか? – JimB

+0

型 'Foo' – jmite