4 ms·
Another way to look at it is that an interface wraps a type by adding a pointer to an extra data structure, which identifies the type and functions on the type
by evmar 14y ago
Another way to look at it is that an interface wraps a type by adding a pointer to an extra data structure, which identifies the type and functions on the type that implement the interface. Since interface{} has no functions, all that it carries is the type; it's concretely represented as a pair of the value and its type. Which is more or less how any language implements an "any" type.
(Disclaimer: it still feels awkward to me, but I found understanding the implementation of it helped me understand the why better. See also http://research.swtch.com/interfaces http://research.swtch.com/interfaces .)