underlyingType
Go has the concept of the underlying type, in which new named types can be created on top of existing core types (such as function types, slices, etc.). The named types then derive certain properties of their underlying type.
For type literals, e.g., a directly specified function type, the underlying type is the type itself.