Interface values
Under the hood, an interface value is a pair: a concrete value and its type.
(value, type)
When you call a method on an interface, Go dispatches to the method on the underlying concrete type.
Try it: the describe helper prints both the value and the type for each assignment. Watch how they change as i holds first a *T, then an F.