You can think of an interface variable as a hidden struct: in pseudo-C, something like
struct { void *data; type_info *type; } If you assign a map to this (even a nil map), it still has a concrete type. "data" is nil, but "type" is "map[X]Y" Therefore the interface variable itself is not nil, as it now holds type info. Maybe this helps: https://play.golang.org/p/tmLu1ECc9s- -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/5b05633a-2120-43af-91b2-ab0b3c565cbd%40googlegroups.com.