code: func (b *BufReader) Discard(n int) (discarded int, err error) {
  	if n < 0 {
  		return 0, bufio.ErrNegativeCount
  	}
  	if n == 0 {
  		return
  	}
  	remain := n
  	for {
  		skip := b.Buffered()
  		if skip == 0 {
  			b.fill()
  			skip = b.Buffered()
  		}
  		if skip > remain {
  			skip = remain
  		}
  		b.r += skip
  		b.changeAvailable(-skip)
  		remain -= skip
  		if remain == 0 {
  			return n, nil
  		}
  		if b.err != nil {
  			return n - remain, b.readErr()
  		}
  	}
  }
docs: // Discard skips the next n bytes, returning the number of bytes discarded.
  //
  // If Discard skips fewer than n bytes, it also returns an error.
  // If 0 <= n <= b.Buffered(), Discard is guaranteed to succeed without
  // reading from the underlying io.BufReader.