Let's get the terminology correct, since it seems you have the definitions
wrong in your question, and that may be a source of confusion when you are reading the
rules for "type definition" versus "type alias":
"type LoadOptionsFunc = func(*LoadOptions) error" is a type alias.
"type LoadOptionsFunc func(*LoadOptions) error" is a type definition.
So if you do actually use a type alias, your program will work.
https://go.dev/play/p/nFW_avNXT4R