type CounterDataReader … func NewCounterDataReader(fn string, rs io.ReadSeeker) (*CounterDataReader, error) { … } func checkMagic(v [4]byte) bool { … } func (cdr *CounterDataReader) readFooter() error { … } // readSegmentPreamble reads and consumes the segment header, segment string // table, and segment args table. func (cdr *CounterDataReader) readSegmentPreamble() error { … } func (cdr *CounterDataReader) readStringTable() error { … } func (cdr *CounterDataReader) readArgs() error { … } // OsArgs returns the program arguments (saved from os.Args during // the run of the instrumented binary) read from the counter // data file. Not all coverage data files will have os.Args values; // for example, if a data file is produced by merging coverage // data from two distinct runs, no os args will be available (an // empty list is returned). func (cdr *CounterDataReader) OsArgs() []string { … } // Goos returns the GOOS setting in effect for the "-cover" binary // that produced this counter data file. The GOOS value may be // empty in the case where the counter data file was produced // from a merge in which more than one GOOS value was present. func (cdr *CounterDataReader) Goos() string { … } // Goarch returns the GOARCH setting in effect for the "-cover" binary // that produced this counter data file. The GOARCH value may be // empty in the case where the counter data file was produced // from a merge in which more than one GOARCH value was present. func (cdr *CounterDataReader) Goarch() string { … } type FuncPayload … // NumSegments returns the number of execution segments in the file. func (cdr *CounterDataReader) NumSegments() uint32 { … } // BeginNextSegment sets up the reader to read the next segment, // returning TRUE if we do have another segment to read, or FALSE // if we're done with all the segments (also an error if // something went wrong). func (cdr *CounterDataReader) BeginNextSegment() (bool, error) { … } // NumFunctionsInSegment returns the number of live functions // in the currently selected segment. func (cdr *CounterDataReader) NumFunctionsInSegment() uint32 { … } const supportDeadFunctionsInCounterData … // NextFunc reads data for the next function in this current segment // into "p", returning TRUE if the read was successful or FALSE // if we've read all the functions already (also an error if // something went wrong with the read or we hit a premature // EOF). func (cdr *CounterDataReader) NextFunc(p *FuncPayload) (bool, error) { … }