reflect.TypeOf(*new(InterfaceFoo))
Will actually promote InterfaceFoo to interface{} before passing it to reflect.TypeOf. Reflect will then inspect the underlying element (nil in this case) resulting in the empty interface type.
Instead, use
reflect.TypeOf(new(InterfaceFoo)).Elem()