code: func (pr *PortRange) Set(value string) error {
  	value = strings.TrimSpace(value)
  
  	// TODO: Accept "80" syntax
  	// TODO: Accept "80+8" syntax
  
  	if value == "" {
  		pr.Base = 0
  		pr.Size = 0
  		return nil
  	}
  
  	hyphenIndex := strings.Index(value, "-")
  	if hyphenIndex == -1 {
  		return fmt.Errorf("expected hyphen in port range")
  	}
  
  	var err error
  	var low int
  	var high int
  	low, err = strconv.Atoi(value[:hyphenIndex])
  	if err == nil {
  		high, err = strconv.Atoi(value[hyphenIndex+1:])
  	}
  	if err != nil {
  		return fmt.Errorf("unable to parse port range: %s", value)
  	}
  
  	if high < low {
  		return fmt.Errorf("end port cannot be less than start port: %s", value)
  	}
  	pr.Base = low
  	pr.Size = 1 + high - low
  	return nil
  }
docs: // Set parses a string of the form "min-max", inclusive at both ends, and
  // sets the PortRange from it.  This is part of the flag.Value and pflag.Value
  // interfaces.