What is unsafe about it? You you still need to have type assertions before you can actually use interface{} object as an actual data type and the type assertions give you the type safety. It is not any less safe than a python equivalent if that is where you are coming from.
Why have static types in a language where you need runtime checks to replace all but the simplest uses for a type system. Even java learned this lesson.
Java is more verbose than necessary. For example in Scala there's https://github.com/mandubian/play-json-zipper this for example. But how is it more painful than Go? Json is a very simple type to represent, after all. Whatever Go has can be emulated by pre generics java. After all, their type systems would be equivalent modulo structural typing.
1
u/ggtsu_00 May 26 '14
I keep hearing so many complaints about generics in go, but interface{} types serve that need pretty well for most cases.
For a tree you could have: