type GeneratorOptions … // MergeGlobalOptionsIntoLocal merges two instances of GeneratorOptions. // Values in the first 'local' argument cannot be overridden by the second // 'global' argument, except in the case of booleans. // // With booleans, there's no way to distinguish an 'intentional' // false from 'default' false. So the rule is, if the global value // of the value of a boolean is true, i.e. disable, it trumps the // local value. If the global value is false, then the local value is // respected. Bottom line: a local false cannot override a global true. // // boolean fields are always a bad idea; should always use enums instead. func MergeGlobalOptionsIntoLocal( localOpts *GeneratorOptions, globalOpts *GeneratorOptions) *GeneratorOptions { … } func overrideMap(localMap *map[string]string, globalMap map[string]string) { … } // CopyMap copies a map. func CopyMap(in map[string]string) map[string]string { … }