code: func NewBufferedClient(addr, prefix string, flushInterval time.Duration, flushBytes int) (Statter, error) {
  	if flushBytes <= 0 {
  		// https://github.com/etsy/statsd/blob/master/docs/metric_types.md#multi-metric-packets
  		flushBytes = 1432
  	}
  	if flushInterval <= time.Duration(0) {
  		flushInterval = 300 * time.Millisecond
  	}
  	sender, err := NewBufferedSender(addr, flushInterval, flushBytes)
  	if err != nil {
  		return nil, err
  	}
  
  	client := &Client{
  		prefix: prefix,
  		sender: sender,
  	}
  
  	return client, nil
  }
docs: // NewBufferedClient returns a new BufferedClient
  //
  // addr is a string of the format "hostname:port", and must be parsable by
  // net.ResolveUDPAddr.
  //
  // prefix is the statsd client prefix. Can be "" if no prefix is desired.
  //
  // flushInterval is a time.Duration, and specifies the maximum interval for
  // packet sending. Note that if you send lots of metrics, you will send more
  // often. This is just a maximal threshold.
  //
  // If flushInterval is 0ms, defaults to 300ms.
  //
  // flushBytes specifies the maximum udp packet size you wish to send. If adding
  // a metric would result in a larger packet than flushBytes, the packet will
  // first be send, then the new data will be added to the next packet.
  //
  // If flushBytes is 0, defaults to 1432 bytes, which is considered safe
  // for local traffic. If sending over the public internet, 512 bytes is
  // the recommended value.