There are actual use-cases for generics in go, and mixing the debate up with just bypassing the type system with empty interfaces is not very helpful. Enough newcomers get seduced by empty interface as it is.
This should really be called config, it looks like it is for reading config files, not environment variables. If it's called env it should probably have some ability to override with env variables if they are defined for a given key.
Have to agree about the lack of inheritance - it's the best thing about Go is avoiding all that abstraction that people pile on top of simple concepts, leading to logic being spread around lots of different files. You can go a long way with just structs and functions.