change MD to type MD map[string]string

This commit is contained in:
iamqizhao
2015-01-28 13:49:18 -08:00
parent 2098bc80fd
commit a485dd0375

View File

@ -84,33 +84,28 @@ func DecodeKeyValue(k, v string) (string, string, error) {
} }
// MD is a mapping from metadata keys to values. // MD is a mapping from metadata keys to values.
type MD struct { type MD map[string]string
m map[string]string
}
// New creates a MD from given key-value map. // New creates a MD from given key-value map.
func New(m map[string]string) (md MD) { func New(m map[string]string) MD {
md := MD{}
if len(m) == 0 { if len(m) == 0 {
return return md
} }
md.m = make(map[string]string)
for k, v := range m { for k, v := range m {
key, val := encodeKeyValue(k, v) key, val := encodeKeyValue(k, v)
md.m[key] = val md[key] = val
} }
return return md
} }
// Pairs returns an MD formed by the mapping of key, value ... // Pairs returns an MD formed by the mapping of key, value ...
// Pairs panics if len(kv) is odd. // Pairs panics if len(kv) is odd.
func Pairs(kv ...string) (md MD) { func Pairs(kv ...string) MD {
if len(kv)%2 == 1 { if len(kv)%2 == 1 {
panic(fmt.Sprintf("Got the odd number of input pairs for metadata: %d", len(kv))) panic(fmt.Sprintf("Got the odd number of input pairs for metadata: %d", len(kv)))
} }
if len(kv) == 0 { md := MD{}
return
}
md.m = make(map[string]string)
var k string var k string
for i, s := range kv { for i, s := range kv {
if i%2 == 0 { if i%2 == 0 {
@ -118,23 +113,23 @@ func Pairs(kv ...string) (md MD) {
continue continue
} }
key, val := encodeKeyValue(k, s) key, val := encodeKeyValue(k, s)
md.m[key] = val md[key] = val
} }
return return md
} }
// Len returns the length of md. // Len returns the length of md.
func (md MD) Len() int { func (md MD) Len() int {
return len(md.m) return len(md)
} }
// Copy returns a copy of md's mapping. // Copy returns a copy of md's mapping.
func (md MD) Copy() (m map[string]string) { func (md MD) Copy() map[string]string {
m = make(map[string]string) m := make(map[string]string)
for k, v := range md.m { for k, v := range md {
m[k] = v m[k] = v
} }
return return m
} }
type mdKey struct{} type mdKey struct{}