2016-05-31 3 views
0

通常、私は、オブジェクトのすべてのプロパティを印刷することができます。構造体のすべてのプロパティを出力する場合でも、その構造体にはデフォルトの文字列表現がありますか?

c.Infof("car: %+v", car) 

しかし、一つの構造体は、String()方法があります。私はこれによって上記の行がString()メソッドが返すものだけを出力すると考えています。

これを無効にして、その構造体のすべてのプロパティを強制的に印刷するにはどうすればよいですか?

package main 

import (
    "fmt" 
) 

type someStruct struct { 
    a int 
    b int 
} 

func (someStruct) String() string { 
    return "this is the end" 
} 

func main() { 
    fmt.Printf("%+v\n", someStruct{1, 2}) 
    fmt.Printf("%#v\n", someStruct{1, 2}) 
} 

この版画:

+0

してください、あなたは正確に達成しようとしていますか?問題は実際には不明です。 –

+0

また、コードスニペットを貼り付けます。 – khrm

+0

私はそれがとても不明であることを知りませんでした。それは明日、私のコンピュータで再びImを投稿します – user1283776

答えて

6

簡単な回避策は%#v動詞を使用することです

this is the end 
main.someStruct{a:1, b:2} 
+0

Wowはそれをまだ知りませんでした。非常に便利です.... – RickyA

+2

@RickyA:['fmt' documentation:](https://golang.org/pkg/fmt/)'%#v \tを読むことができます。 '。 ( '%#v'もGoStringerインターフェースで変更可能です) – JimB

関連する問題