code: func (d *Decoder) getc() (b byte, ok bool) {
  	if d.err != nil {
  		return 0, false
  	}
  	if d.nextByte >= 0 {
  		b = byte(d.nextByte)
  		d.nextByte = -1
  	} else {
  		b, d.err = d.r.ReadByte()
  		if d.err != nil {
  			return 0, false
  		}
  		if d.saved != nil {
  			d.saved.WriteByte(b)
  		}
  	}
  	if b == '\n' {
  		d.line++
  	}
  	return b, true
  }
docs: // Read a single byte.
  // If there is no byte to read, return ok==false
  // and leave the error in d.err.
  // Maintain line number.