code: func (f *FlagLoader) Load(s interface{}) error {
  	strct := structs.New(s)
  	structName := strct.Name()
  
  	flagSet := flag.NewFlagSet(structName, f.ErrorHandling)
  	f.flagSet = flagSet
  
  	for _, field := range strct.Fields() {
  		f.processField(field.Name(), field)
  	}
  
  	flagSet.Usage = func() {
  		fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
  		flagSet.PrintDefaults()
  		fmt.Fprintf(os.Stderr, "\nGenerated environment variables:\n")
  		e := &EnvironmentLoader{
  			Prefix:    f.EnvPrefix,
  			CamelCase: f.CamelCase,
  		}
  		e.PrintEnvs(s)
  		fmt.Println("")
  	}
  
  	args := filterArgs(os.Args[1:])
  	if f.Args != nil {
  		args = f.Args
  	}
  
  	return flagSet.Parse(args)
  }
docs: // Load loads the source into the config defined by struct s