Earlier quoted context omitted.
And how do I get the same type out that I put in? I'd end up with Java 1 style programming, no generics, and having to cast atuff from Object/interface{} everywhere. interface{} is like Object, if it even exists once in your code, it's broken.
> And how do I get the same type out that I put in? You can only get out the same type you put in. Presumably in your code you know that collection of Foo objects contains Foos, so you can just do: if foo, ok = collection.get().(Foo); !ok { return errors.New("expected a Foo") } Write a few wrapper functions and you're done.
Seriously, this is why generics exist. I want to write it once, use it everywhere again, and want to have the compiler know if I made a mistake.