code: func parsePortRange(portRange string) (beginPort int, endPort int, err error) {
  	if len(portRange) == 0 {
  		portRange = DefaultPortRange
  	}
  
  	strs := strings.Split(portRange, "-")
  	if len(strs) != 2 {
  		// port number -1 indicates invalid
  		return -1, -1, fmt.Errorf("port range should be in the format of `a-b`")
  	}
  	for i := range strs {
  		num, err := strconv.Atoi(strs[i])
  		if err != nil {
  			// port number -1 indicates invalid
  			return -1, -1, err
  		}
  		if num < 0 {
  			// port number -1 indicates invalid
  			return -1, -1, fmt.Errorf("port number %d should be >=0", num)
  		}
  		if i == 0 {
  			beginPort = num
  			continue
  		}
  		endPort = num
  		// switch when first port number > second port number
  		if beginPort > endPort {
  			endPort = beginPort
  			beginPort = num
  		}
  	}
  	return beginPort, endPort, nil
  }
docs: // parsePortRange parse the begin and end port from a raw string(format: a-b).  beginPort <= endPort
  // in the return value.