func (params *headerParams) Get(key string) (MaybeString, bool) {
	params.mu.RLock()
	v, ok := params.params[key]
	params.mu.RUnlock()
	return v, ok
}
Returns the requested parameter value.
package sip
import (
	"bytes"
	"fmt"
	"strings"
	"sync"
	"github.com/ghettovoice/gosip/util"
)
const abnfWs = " \t"
type Header interface {
	Name() string
	Value() string
	Clone() Header
	String() string
	Equals(other interface{}) bool
}
type Uri interface {
	Equals(other interface{}) bool
	String() string
	Clone() Uri
	IsEncrypted() bool
	SetEncrypted(flag bool)
	User() MaybeString
	SetUser(user MaybeString)
	Password() MaybeString
	SetPassword(pass MaybeString)
	Host() string
	SetHost(host string)
	Port() *Port
	SetPort(port *Port)
	UriParams() Params
	SetUriParams(params Params)
	Headers() Params
	SetHeaders(params Params)
	IsWildcard() bool
}
type ContactUri interface {
	Uri
}
type Params interface {
	Get(key string) (MaybeString, bool)
	Add(key string, val MaybeString) Params
	Remove(key string) Params
	Clone() Params
	Equals(params interface{}) bool
	ToString(sep uint8) string
	String() string
	Length() int
	Items() map[string]MaybeString
	Keys() []string
	Has(key string) bool
}
type headerParams struct {
	mu         sync.RWMutex
	params     map[string]MaybeString
	paramOrder []string
}
func NewParams() Params {
	return &headerParams{
		params:     make(map[string]MaybeString),
		paramOrder: []string{},
	}
}
func (params *headerParams) Items() map[string]MaybeString {
	params.mu.RLock()
	defer params.mu.RUnlock()
	return params.params
}
func (params *headerParams) Keys() []string {
	params.mu.RLock()
	defer params.mu.RUnlock()
	return params.paramOrder
}