code: func (d *decode) readFloat64() (float64, error) {
  	length, err := d.readUint8()
  	if err != nil {
  		return 0, err
  	}
  	switch length {
  	case 253:
  		return math.NaN(), nil
  	case 254:
  		return math.Inf(0), nil
  	case 255:
  		return math.Inf(-1), nil
  	default:
  		floatBytes := make([]byte, length)
  		_, err := io.ReadFull(d.r, floatBytes)
  		if err != nil {
  			return 0, err
  		}
  		f, err := strconv.ParseFloat(string(floatBytes), 64)
  		return f, err
  	}
  
  	panic("not reached")
  }
docs: // Doubles are saved as strings prefixed by an unsigned
  // 8 bit integer specifying the length of the representation.
  // This 8 bit integer has special values in order to specify the following
  // conditions:
  // 253: not a number
  // 254: + inf
  // 255: - inf