Try implementing an OTEL Tracer. This interface is insane, and should really just be a struct.
https://github.com/open-telemetry/opentelemetry-go/blob/trac...
https://github.com/open-telemetry/opentelemetry-go/blob/trac...
It's a list of the behaviors you need to implement if you're rolling your own OTEL Tracer Span implementation, and not using one of the multiple available.
In contrast, OpenTracing's interfaces had hardly any required methods, so you had to do a runtime type-cast to the whichever implementation you were using in order to access anything useful on the Span like the OperationName.