打印结构的所有属性,即使该结构有一个默认的字符串表示?

时间:2016-05-31 15:16:36

标签: go

通常,我可以使用以下方式打印对象的所有属性:

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

但是一个结构有一个String()方法。我认为这导致上面的行仅打印String()方法返回的内容。

如何覆盖此并强制打印该结构的所有属性?

1 个答案:

答案 0 :(得分:6)

一个简单的解决方法是使用%#v动词:

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})
}

打印:

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