How about an WithMandatoryMessage(format string, a ...any)
option? In the end, someone could also call New("")
with your current API, so you either check for a non-empty message during construction or you loose nothing when someone doesn't use this option.
Otherwise it's guesswork and we need to know more about your problem. What are you trying to achieve?