package grpc import ( "google.golang.org/grpc/metadata" ) type grpcMetadataCarrier struct { md *metadata.MD } func (c *grpcMetadataCarrier) Get(key string) string { values := c.md.Get(key) if len(values) > 0 { return values[0] } return "" } func (c *grpcMetadataCarrier) Set(key string, value string) { c.md.Set(key, value) } func (c *grpcMetadataCarrier) Keys() []string { result := make([]string, 0, c.md.Len()) for key := range *c.md { result = append(result, key) } return result }