typed/reader.go
func (r *Reader) ReadString(n int) string {
	if r.err != nil {
		return ""
	}

	var buf []byte
	if n <= maxPoolStringLen {
		buf = r.buf[:n]
	} else {
		buf = make([]byte, n)
	}

	var readN int
	readN, r.err = io.ReadFull(r.reader, buf)
	if readN < n {
		return ""
	}
	s := string(buf)

	return s
}
func (r *Reader) ReadString(n int) string {
	if r.err != nil {
		return ""
	}

	var buf []byte
	if n <= maxPoolStringLen {
		buf = r.buf[:n]
	} else {
		buf = make([]byte, n)
	}

	var readN int
	readN, r.err = io.ReadFull(r.reader, buf)
	if readN < n {
		return ""
	}
	s := string(buf)

	return s
}
// ReadString reads a string of length n.