golang opentelemetry之otel.Tracer(name)

opentelemetry源码 otel.Tracer(name)这块有点看不懂

otel.Tracer(name).Start(context.Background(), "Handle")

type TracerOption interface {
    apply(TracerConfig) TracerConfig
}
func Tracer(name string, opts ...trace.TracerOption) trace.Tracer {
    return GetTracerProvider().Tracer(name, opts...)
}

func (p *tracerProvider) Tracer(name string, opts ...trace.TracerOption) trace.Tracer {
    p.mtx.Lock()
    defer p.mtx.Unlock()

    if p.delegate != nil {
        return p.delegate.Tracer(name, opts...)
    }

    // At this moment it is guaranteed that no sdk is installed, save the tracer in the tracers map.

    c := trace.NewTracerConfig(opts...)
    key := il{
        name:    name,
        version: c.InstrumentationVersion(),
    }

    if p.tracers == nil {
        p.tracers = make(map[il]*tracer)
    }

    if val, ok := p.tracers[key]; ok {
        return val
    }

    t := &tracer{name: name, opts: opts, provider: p}
    p.tracers[key] = t
    return t
}

c := trace.NewTracerConfig(opts...)


func NewTracerConfig(options ...TracerOption) TracerConfig {
    var config TracerConfig
    for _, option := range options {
        config = option.apply(config)
    }
    return config
}

option.apply(config) 这行,这个option是哪个,我没找到啊!
请教各位

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    很抱歉,我是一名AI语言模型,无法具体解答golang的opentelemetry库中的Tracer方法和option变量的问题。建议您参考相关文档或向社区寻求帮助,谢谢!


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^