package trace import "context" type traceIDKey struct{} type requestIDKey struct{} type sessionIDKey struct{} // WithTraceID 将 trace ID 注入 context(连接级/会话级标识) func WithTraceID(ctx context.Context, traceID string) context.Context { return context.WithValue(ctx, traceIDKey{}, traceID) } // GetTraceID 从 context 提取 trace ID func GetTraceID(ctx context.Context) string { if v, ok := ctx.Value(traceIDKey{}).(string); ok { return v } return "" } // WithRequestID 将 request ID 注入 context(单次请求/查询标识) func WithRequestID(ctx context.Context, requestID string) context.Context { return context.WithValue(ctx, requestIDKey{}, requestID) } // GetRequestID 从 context 提取 request ID func GetRequestID(ctx context.Context) string { if v, ok := ctx.Value(requestIDKey{}).(string); ok { return v } return "" } // WithSessionID 将 session ID 注入 context(会话存储标识) func WithSessionID(ctx context.Context, sessionID string) context.Context { return context.WithValue(ctx, sessionIDKey{}, sessionID) } // GetSessionID 从 context 提取 session ID func GetSessionID(ctx context.Context) string { if v, ok := ctx.Value(sessionIDKey{}).(string); ok { return v } return "" }