code: func NewWithPath(path string) *DefaultLoader {
  	loaders := []Loader{}
  
  	// Read default values defined via tag fields "default"
  	loaders = append(loaders, &TagLoader{})
  
  	// Choose what while is passed
  	if strings.HasSuffix(path, "toml") {
  		loaders = append(loaders, &TOMLLoader{Path: path})
  	}
  
  	if strings.HasSuffix(path, "json") {
  		loaders = append(loaders, &JSONLoader{Path: path})
  	}
  
  	if strings.HasSuffix(path, "yml") || strings.HasSuffix(path, "yaml") {
  		loaders = append(loaders, &YAMLLoader{Path: path})
  	}
  
  	e := &EnvironmentLoader{}
  	f := &FlagLoader{}
  
  	loaders = append(loaders, e, f)
  	loader := MultiLoader(loaders...)
  
  	d := &DefaultLoader{}
  	d.Loader = loader
  	d.Validator = MultiValidator(&RequiredValidator{})
  	return d
  }
docs: // NewWithPath returns a new instance of Loader to read from the given
  // configuration file.