code: func (bd *BinaryDecoder) ReadString() (string, error) {
  	if err := checkEOF(bd.buf, bd.pos, 1); err != nil {
  		return "", err
  	}
  	length, err := bd.ReadLong()
  	if err != nil || length < 0 {
  		return "", InvalidStringLength
  	}
  	if err := checkEOF(bd.buf, bd.pos, int(length)); err != nil {
  		return "", err
  	}
  	value := string(bd.buf[bd.pos : bd.pos+length])
  	bd.pos += length
  	return value, nil
  }
docs: // ReadString reads a string value. Returns a decoded value and an error if it occurs.