通常,我可以使用以下方式打印对象的所有属性:
c.Infof("car: %+v", car)
但是一个结构有一个String()
方法。我认为这导致上面的行仅打印String()
方法返回的内容。
如何覆盖此并强制打印该结构的所有属性?
答案 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}