repo_description: Agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.
repo_topics: golang hacktoberfest influxdb json kafka logs metrics modbus monitoring mqtt opcua t telegraf telemetry-collection time-series windows-eventlog xpath
code: // Package choice provides basic functions for working with
  // plugin options that must be one of several values.
  package choice
  
  import "fmt"
  
  // Contains return true if the choice in the list of choices.
  func Contains(choice string, choices []string) bool {
  	for _, item := range choices {
  		if item == choice {
  			return true
  		}
  	}
  	return false
  }
  
  // Check returns an error if a choice is not one of
  // the available choices.
  func Check(choice string, available []string) error {
  	if !Contains(choice, available) {
  		return fmt.Errorf("unknown choice %s", choice)
  	}
  	return nil
  }
  
  // CheckSlice returns an error if the choices is not a subset of
  // available.
  func CheckSlice(choices, available []string) error {
  	for _, choice := range choices {
  		err := Check(choice, available)
  		if err != nil {
  			return err
  		}
  	}
  	return nil
  }
  