code: func (n *NetworkOpt) Set(value string) error {
  	longSyntax, err := regexp.MatchString(`\w+=\w+(,\w+=\w+)*`, value)
  	if err != nil {
  		return err
  	}
  
  	var netOpt NetworkAttachmentOpts
  	if longSyntax {
  		csvReader := csv.NewReader(strings.NewReader(value))
  		fields, err := csvReader.Read()
  		if err != nil {
  			return err
  		}
  
  		netOpt.Aliases = []string{}
  		for _, field := range fields {
  			parts := strings.SplitN(field, "=", 2)
  
  			if len(parts) < 2 {
  				return fmt.Errorf("invalid field %s", field)
  			}
  
  			key := strings.TrimSpace(strings.ToLower(parts[0]))
  			value := strings.TrimSpace(strings.ToLower(parts[1]))
  
  			switch key {
  			case networkOptName:
  				netOpt.Target = value
  			case networkOptAlias:
  				netOpt.Aliases = append(netOpt.Aliases, value)
  			case driverOpt:
  				key, value, err = parseDriverOpt(value)
  				if err == nil {
  					if netOpt.DriverOpts == nil {
  						netOpt.DriverOpts = make(map[string]string)
  					}
  					netOpt.DriverOpts[key] = value
  				} else {
  					return err
  				}
  			default:
  				return fmt.Errorf("invalid field key %s", key)
  			}
  		}
  		if len(netOpt.Target) == 0 {
  			return fmt.Errorf("network name/id is not specified")
  		}
  	} else {
  		netOpt.Target = value
  	}
  	n.options = append(n.options, netOpt)
  	return nil
  }
docs: // Set networkopts value