func (a *Attrs) SetAttr(key string, value interface{}) *Attrs {
	a.attrsLock.Lock()
	defer a.attrsLock.Unlock()

	valVal := reflect.ValueOf(value)
	switch valVal.Kind() {
	case reflect.Func:
		value = valVal.Type().String()
	}

	hash := getAttrHash(key)
	a.attrs[hash] = value
	return a
}
func (a *Attrs) SetAttr(key string, value interface{}) *Attrs {
	a.attrsLock.Lock()
	defer a.attrsLock.Unlock()

	valVal := reflect.ValueOf(value)
	switch valVal.Kind() {
	case reflect.Func:
		value = valVal.Type().String()
	}

	hash := getAttrHash(key)
	a.attrs[hash] = value
	return a
}
func ( a * Attrs ) SetAttr ( key string , value interface { } ) * Attrs { a . attrsLock . Lock ( ) defer a . attrsLock . Unlock ( ) valVal := reflect . ValueOf ( value ) switch valVal . Kind ( ) { case reflect . Func : value = valVal . Type ( ) . String ( ) } hash := getAttrHash ( key ) a . attrs [ hash ] = value return a }
// SetAttr will set key to the provided value.  If the attribute already exists the value will
// be replaced with the new value.
SetAttr will set key to the provided value . If the attribute already exists the value will be replaced with the new value .