(v reflect.Value, n int)
| 325 | } |
| 326 | |
| 327 | func (d *Decoder) decodeStruct(v reflect.Value, n int) error { |
| 328 | if n == -1 { |
| 329 | v.Set(reflect.Zero(v.Type())) |
| 330 | return nil |
| 331 | } |
| 332 | |
| 333 | fields := structs.Fields(v.Type(), d.structTag) |
| 334 | for i := 0; i < n; i++ { |
| 335 | name, err := d.decodeStringTemp() |
| 336 | if err != nil { |
| 337 | return err |
| 338 | } |
| 339 | |
| 340 | if f := fields.Map[name]; f != nil { |
| 341 | if err := f.DecodeValue(d, v); err != nil { |
| 342 | return err |
| 343 | } |
| 344 | continue |
| 345 | } |
| 346 | |
| 347 | if d.flags&disallowUnknownFieldsFlag != 0 { |
| 348 | return fmt.Errorf("msgpack: unknown field %q", name) |
| 349 | } |
| 350 | if err := d.Skip(); err != nil { |
| 351 | return err |
| 352 | } |
| 353 | } |
| 354 | |
| 355 | return nil |
| 356 | } |
no test coverage detected