code: func StartSpan(ctx context.Context, operationName string, opts ...opentracing.StartSpanOption) (opentracing.Span, context.Context) {
  	parent := opentracing.SpanFromContext(ctx)
  	tracer := opentracing.Tracer(&opentracing.NoopTracer{})
  	if parent != nil {
  		tracer = parent.Tracer()
  		opts = append(opts, opentracing.ChildOf(parent.Context()))
  	}
  	span := tracer.StartSpan(operationName, opts...)
  	if parent != nil {
  		return span, opentracing.ContextWithSpan(ctx, span)
  	}
  	return span, ctx
  }
docs: // StartSpan starts a new span as a child of the span in context.
  // If there is no span in context then this is a no-op.
  // The difference from opentracing.StartSpanFromContext is that this method
  // does not depend on global tracer.