code: func (c *Config) Setup(serviceName string) (opentracing.Tracer, io.Closer, error) {
  	tag := strings.SplitN(c.GlobalTag, ":", 2)
  
  	value := ""
  	if len(tag) == 2 {
  		value = tag[1]
  	}
  
  	opts := []datadog.StartOption{
  		datadog.WithAgentAddr(c.LocalAgentHostPort),
  		datadog.WithServiceName(serviceName),
  		datadog.WithGlobalTag(tag[0], value),
  		datadog.WithDebugMode(c.Debug),
  		datadog.WithPropagator(datadog.NewPropagator(&datadog.PropagatorConfig{
  			TraceHeader:    c.TraceIDHeaderName,
  			ParentHeader:   c.ParentIDHeaderName,
  			PriorityHeader: c.SamplingPriorityHeaderName,
  			BaggagePrefix:  c.BagagePrefixHeaderName,
  		})),
  	}
  	if c.PrioritySampling {
  		opts = append(opts, datadog.WithPrioritySampling())
  	}
  	tracer := ddtracer.New(opts...)
  
  	// Without this, child spans are getting the NOOP tracer
  	opentracing.SetGlobalTracer(tracer)
  
  	log.WithoutContext().Debug("DataDog tracer configured")
  
  	return tracer, nil, nil
  }
docs: // Setup sets up the tracer