eventName)?
зачем. можно просто у BaseEvent сделать Copy потом (e *EncodedPayloadReceived) Copy() BaseEvent{ return &EncodedPayloadReceived{} }
а хер там) сannot unmarshal tuple in to events.BaseEvent
func (arguments Arguments) copyTuple(v interface{}, marshalledValues []interface{}) error { value := reflect.ValueOf(v).Elem() nonIndexedArgs := arguments.NonIndexed() switch value.Kind() { case reflect.Struct: argNames := make([]string, len(nonIndexedArgs)) for i, arg := range nonIndexedArgs { argNames[i] = arg.Name } var err error abi2struct, err := mapArgNamesToStructFields(argNames, value) if err != nil { return err } for i, arg := range nonIndexedArgs { field := value.FieldByName(abi2struct[arg.Name]) if !field.IsValid() { return fmt.Errorf("abi: field %s can't be found in the given value", arg.Name) } if err := set(field, reflect.ValueOf(marshalledValues[i])); err != nil { return err } } case reflect.Slice, reflect.Array: if value.Len() < len(marshalledValues) { return fmt.Errorf("abi: insufficient number of arguments for unpack, want %d, got %d", len(arguments), value.Len()) } for i := range nonIndexedArgs { if err := set(value.Index(i), reflect.ValueOf(marshalledValues[i])); err != nil { return err } } default: return fmt.Errorf("abi:[2] cannot unmarshal tuple in to %v", value.Type()) } return nil }
а можешь везде протащить структуру а не интерфейс?
мне кажется ты тупо не указатель возвращал
да лень, просто забил и цикл вынес в родитель
Обсуждают сегодня