code: func (iter *Iterator) ReadStringAsSlice() (ret []byte) {
  	c := iter.nextToken()
  	if c == '"' {
  		for i := iter.head; i < iter.tail; i++ {
  			// require ascii string and no escape
  			// for: field name, base64, number
  			if iter.buf[i] == '"' {
  				// fast path: reuse the underlying buffer
  				ret = iter.buf[iter.head:i]
  				iter.head = i + 1
  				return ret
  			}
  		}
  		readLen := iter.tail - iter.head
  		copied := make([]byte, readLen, readLen*2)
  		copy(copied, iter.buf[iter.head:iter.tail])
  		iter.head = iter.tail
  		for iter.Error == nil {
  			c := iter.readByte()
  			if c == '"' {
  				return copied
  			}
  			copied = append(copied, c)
  		}
  		return copied
  	}
  	iter.ReportError("ReadStringAsSlice", `expects " or n, but found `+string([]byte{c}))
  	return
  }
docs: // ReadStringAsSlice read string from iterator without copying into string form.
  // The []byte can not be kept, as it will change after next iterator call.