code: func GetHostPartIP(ip net.IP, mask net.IPMask) (net.IP, error) {
  	// Find the effective starting of address and mask
  	is, ms, err := compareIPMask(ip, mask)
  	if err != nil {
  		return nil, fmt.Errorf("cannot compute host portion ip address because %s", err)
  	}
  
  	// Compute host portion
  	out := GetIPCopy(ip)
  	for i := 0; i < len(mask[ms:]); i++ {
  		out[is+i] &= ^mask[ms+i]
  	}
  
  	return out, nil
  }
docs: // GetHostPartIP returns the host portion of the ip address identified by the mask.
  // IP address representation is not modified. If address and mask are not compatible
  // an error is returned.