ReadIntf reads out the next object as a raw interface{}/any. Arrays are decoded as []interface{}, and maps are decoded as map[string]interface{}. Integers are decoded as int64 and unsigned integers are decoded as uint64.
()
| 1510 | // as map[string]interface{}. Integers are decoded as int64 |
| 1511 | // and unsigned integers are decoded as uint64. |
| 1512 | func (m *Reader) ReadIntf() (i any, err error) { |
| 1513 | var t Type |
| 1514 | t, err = m.NextType() |
| 1515 | if err != nil { |
| 1516 | return |
| 1517 | } |
| 1518 | switch t { |
| 1519 | case BoolType: |
| 1520 | i, err = m.ReadBool() |
| 1521 | return |
| 1522 | |
| 1523 | case IntType: |
| 1524 | i, err = m.ReadInt64() |
| 1525 | return |
| 1526 | |
| 1527 | case UintType: |
| 1528 | i, err = m.ReadUint64() |
| 1529 | return |
| 1530 | |
| 1531 | case BinType: |
| 1532 | i, err = m.ReadBytes(nil) |
| 1533 | return |
| 1534 | |
| 1535 | case StrType: |
| 1536 | i, err = m.ReadString() |
| 1537 | return |
| 1538 | |
| 1539 | case Complex64Type: |
| 1540 | i, err = m.ReadComplex64() |
| 1541 | return |
| 1542 | |
| 1543 | case Complex128Type: |
| 1544 | i, err = m.ReadComplex128() |
| 1545 | return |
| 1546 | |
| 1547 | case TimeType: |
| 1548 | i, err = m.ReadTime() |
| 1549 | return |
| 1550 | |
| 1551 | case DurationType: |
| 1552 | i, err = m.ReadDuration() |
| 1553 | return |
| 1554 | |
| 1555 | case ExtensionType: |
| 1556 | var t int8 |
| 1557 | t, err = m.peekExtensionType() |
| 1558 | if err != nil { |
| 1559 | return |
| 1560 | } |
| 1561 | f, ok := extensionReg[t] |
| 1562 | if ok { |
| 1563 | e := f() |
| 1564 | err = m.ReadExtension(e) |
| 1565 | i = e |
| 1566 | return |
| 1567 | } |
| 1568 | var e RawExtension |
| 1569 | e.Type = t |