You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The reasons why this problem occurs are as follows:
As can be seen in the switch statement, when searching for a key in Struct to find an environment variable, it is recognized as a key only if the type is not map. (default case shadow[strings.ToLower(fullKey)] = true)
In the case of Time Struct, when inferring the type with value.(type), it is considered a map. Therefore, it is not considered the key value of an environment variable.
This problem does not occur if I set the value in advance through SetDefault. However, looking at #1429, it doesn't seem like the intention is to always use SetDefault. So I thought of this problem as a bug.
The text was updated successfully, but these errors were encountered:
A maintainer will take a look at your issue shortly. 👀
In the meantime: We are working on Viper v2 and we would love to hear your thoughts about what you like or don't like about Viper, so we can improve or fix those issues.
📣 If you've already given us your feedback, you can still help by spreading the news,
either by sharing the above link or telling people about this on Twitter:
Preflight Checklist
Viper Version
1.8.1
Go Version
1.21.4
Config Source
Environment variables
Format
No response
Repl.it link
No response
Code reproducing the issue
Expected Behavior
Run with Environment Variables
Expected Output (stdout)
Actual Behavior
Decode for
Time
type does not work properly.Steps To Reproduce
No response
Additional Information
After version
1.8.0
was released, I confirmed new feature aboutUnmarshal
. And in general types, it operates normally as expected above.However,
Time
does not work properly. I looked for the reason and I think it related in theflattenAndMergeMap
function.viper/viper.go
Lines 2092 to 2105 in 9154b90
The reasons why this problem occurs are as follows:
map
. (default caseshadow[strings.ToLower(fullKey)] = true
)Time Struct
, when inferring the type withvalue.(type)
, it is considered a map. Therefore, it is not considered the key value of an environment variable.This problem does not occur if I set the value in advance through
SetDefault
. However, looking at #1429, it doesn't seem like the intention is to always useSetDefault
. So I thought of this problem as a bug.The text was updated successfully, but these errors were encountered: