I wish to model a value which can have two possible forms: absent, or a string.
The natural way to do this is with
Maybe String, or
string option, etc. However, Go does not have variant types like this.
I then thought, following Java, C, etc., that the alternative would be nullability, or
nil in Go. However,
nil is not a member of the
string type in Go.
Searching, I then thought to use the type
*string. This could work, but seems very awkward (e.g. I cannot take the address of the string literal in the same way that I can take the address of a struct literal).
What is the idiomatic way to model such a value in Go?