In that case, the 'T' is whatever the type argument is to the generic "run" function. So as long as "run" can infer its argument type, then you're all good.
That's the "easy" case for type inference: an argument of type T.
func run[T any](t T)
You call run with a string literal, so clearly it's run[string]("howdy")
OTOH, your "interfaceFunc" has a more complex signature:
func interfaceFunc[T any](x GenericInterface[T])