Just do
type Username string
And replace return Username{username}
with return Username(username) type Username string
And replace return Username{username}
with return Username(username)A caller can just say:
// This is returning an error for some reason, so let's do it directly.
// username, err := parsers.NewUsername(raw)
username := parsers.Username(raw)
You also get implicit conversions in ways you probably don't want: var u Username
u = "<hello>" // Implicitly converts from string to Username