https://go.googlesource.com/proposal/+/master/design/15292/2...
https://go.googlesource.com/proposal/+/master/design/15292/2...
Generics do not obviate the need for interface{} or the described use case of map[string]interface{}
interface{} is like Java or C# object. It packages a type and a value in a single value that can be queried at runtime to extract the underlying value in a type safe matter.
When people use map[string]interface{] it's because they don't know the type of value at compile time.
Go maps are actually not generic in the same way they are in other languages, there is just a single map struct with type descriptors used to do some compiler magic: https://dave.cheney.net/2018/05/29/how-the-go-runtime-implem...
For generics what you want is not interface{}, which says nothing, but a type T that has meaningful constraints.