func ReadStruct(reader *bufio.Reader, dst interface{}) error {
	err := binary.Read(reader, binary.LittleEndian, dst)
	if err != nil {
		return err
	}
	return nil
}
ReadStruct - read arbitrary data structure from binary stream
package xgbin
import (
	"bufio"
	"encoding/binary"
)
type LearnerModelParam struct {
	BaseScore float32
	NumFeatures uint32
	NumClass int32
	ContainExtraAttrs int32
	ContainEvalMetrics int32
	Reserved [29]int32
}
type GBTreeModelParam struct {
	NumTrees int32
	NumRoots int32
	NumFeature int32
	Pad32bit int32
	NumPbufferDeprecated int64
	NumOutputGroup int32
	SizeLeafVector int32
	Reserved [32]int32
}
type TreeParam struct {
	NumRoots int32
	NumNodes int32
	NumDeleted int32
	MaxDepth int32
	NumFeature int32
	SizeLeafVector int32
	Reserved [31]int32
}
type Node struct {
	Parent int32
	CLeft  int32
	CRight int32
	SIndex uint32
	Info float32
}
type RTreeNodeStat struct {
	LossChg float32
	SumHess float32
	BaseWeight float32
	LeafChildCnt int32
}
type GBLinearModelParam struct {
	NumFeature uint32
	NumOutputGroup int32
	Reserved [32]int32
}
type TreeModel struct {
	Nodes []Node
	Stats []RTreeNodeStat
	Param TreeParam
}
type GBTreeModel struct {
	Param GBTreeModelParam
	Trees []*TreeModel
	TreeInfo []int32
}
type ModelHeader struct {
	Param   LearnerModelParam
	NameObj string
	NameGbm string
}
type GBLinearModel struct {
	Param   GBLinearModelParam
	Weights []float32
}