You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We need to be able to expand our Settings structs, see:
type TelemetrySettings struct {
Logger *zap.Logger
TracerProvider trace.TracerProvider
MeterProvider metric.MeterProvider
Resource pcommon.Resource
}
// Compiles fine, which means adding a new member will cause this to fail.
ts := component.TelemetrySettings{zap.NewNop(), nooptrace.NewTracerProvider(), noopmetric.NewMeterProvider(), pcommon.NewResource()}
Proposal use a blank field member (_ struct{}) to disallow unkeyed literals initialization.
type TelemetrySettings struct {
Logger *zap.Logger
TracerProvider trace.TracerProvider
MeterProvider metric.MeterProvider
Resource pcommon.Resource
_ struct{} // Prevents unkeyed literals
}
// Compilation error without the last struct.
ts := component.TelemetrySettings{zap.NewNop(), nooptrace.NewTracerProvider(), noopmetric.NewMeterProvider(), pcommon.NewResource()}
// Compilation error because cannot initialize blank member.
ts := component.TelemetrySettings{zap.NewNop(), nooptrace.NewTracerProvider(), noopmetric.NewMeterProvider(), pcommon.NewResource(), struct{}{}}
We need to be able to expand our Settings structs, see:
Proposal use a blank field member (
_ struct{}
) to disallow unkeyed literals initialization.In the main versioning guarantees we reserve the right to add new fields, see https://github.com/open-telemetry/opentelemetry-collector/blob/main/VERSIONING.md#general-go-api-considerations so even a module is stable we can still do this change.
The text was updated successfully, but these errors were encountered: