func (r *InMemoryReporter) Report(span *Span) {
	r.lock.Lock()
	r.spans = append(r.spans, span)
	r.lock.Unlock()
}
Report implements Report() method of Reporter by storing the span in the buffer.
package jaeger
import (
	"fmt"
	"sync"
	"sync/atomic"
	"time"
	"github.com/opentracing/opentracing-go"
	"github.com/uber/jaeger-client-go/log"
)
type Reporter interface {
	Report(span *Span)
	Close()
}
type nullReporter struct{}
func NewNullReporter() Reporter {
	return &nullReporter{}
}
func (r *nullReporter) Report(span *Span) {
}
func (r *nullReporter) Close() {
}
type loggingReporter struct {
	logger Logger
}
func NewLoggingReporter(logger Logger) Reporter {
	return &loggingReporter{logger}
}
func (r *loggingReporter) Report(span *Span) {
	r.logger.Infof("Reporting span %+v", span)
}
func (r *loggingReporter) Close() {
}
type InMemoryReporter struct {
	spans []opentracing.Span
	lock  sync.Mutex
}
func NewInMemoryReporter() *InMemoryReporter {
	return &InMemoryReporter{
		spans: make([]opentracing.Span, 0, 10),
	}
}