- Notifications
You must be signed in to change notification settings - Fork161
Home
Rohan Verma edited this pageDec 10, 2019 ·2 revisions
Welcome to the koanf wiki!
Koanf uses the mapstructure package that's used for decoding the config from koanf to structs.
By default, koanf uses the following mapstructure decoder config:
mapstructure.DecoderConfig{...WeaklyTypedInput:true,TagName="koanf"...}
WeaklyTypedInput
is set to be true and implies that koanf will do the following "weak" conversions:
- bools to string (true = "1", false = "0")
- numbers to string (base 10)
- bools to int/uint (true = 1, false = 0)
- strings to int/uint (base implied by prefix)
- int to bool (true if value != 0)
- string to bool (accepts: 1, t, T, TRUE, true, True, 0, f, F, false, False. Anything else is an error)
- empty array = empty map and vice versa
- negative numbers to overflowed uint values (base 10)
- slice of maps to a merged map
- single values are converted to slices if required. Each is weakly decoded. For example: "4" can become []int{4} the target type is an int slice.
TheTagName
inDecoderConfig
is set tokoanf
by default. If it is not set, the default fallback ismapstructure
. Although, for fields without any tag,mapstructure fallsback to the field name. ref:#5
For embedded/composite structs, you can use the,squash
tag to squash multiple embedded structs. You can refer to an example present in themapstructure godoc, ref:#8