如何在Go中获取用户生成的节俭对象的内存大小

I am new to Go, and trying to get the estimate size of a Thrift generated object in Go, the object has multiple level, and in the case of an member variable is an collection of pointers, I want to get the total size of pointer and the data that been pointed to. The sizeOf function won't work in this case, as it will only count the space taken by the pointer, not the actual space. What's the best way to get a good estimate of the size of the object? Ideally, I would like to breakdown the size into different fields and subfields

Here is how an example object looks like in Go

type Microshard struct {
    Header         *Header           `thrift:"header,1,required"`
    ValidatorStats []*ValidatorStat  `thrift:"validatorStats,2,required"`
    DataMap1       map[int64][]byte  `thrift:"dataMap1,3,required"`
    DataMap2       map[int64][]byte  `thrift:"dataMap2,4,required"`
    DataMap3       map[int64][]int64 `thrift:"dataMap3,5,required"`
    DebugInfoMap   map[string][]byte `thrift:"debugInfoMap,6,required"`
    Index          *IndexData        `thrift:"index,7"`
}