Go does not have namespaces so it's best to not touch this word at all.
And, no, when it comes to names, the dot in Go is only used to access
members of compound data types, methods and symbols in imported modules.
So the only way to get "Reply.Ok" without using an object named "Reply"
is to have a module named Reply which contains a symbol Ok.
Having said that, I think that what you're trying to combat with is
really a non-issue. I like C#'s approach to enums as you do, but Go is
not C# so as with any language, the best advise is to do what's
accepted by the community, so I'd use ReplyOk et al. For instance, see
what constants the net/http standard module [1] exports.
On the other hand, making constants out of strings may be a dubious
practice because Go is not C and I'd not be surprised that for the
program
const a = "foo"
...
var b = a
the compiler would generate the code literally copying the bytes of
"foo" into a new string value created for b. So may be your approach
of using a struct is just Ok. Also note that the usual way of having
simple exported errors in a module is to create exported variables which
are essentially string-valued Error interfaces (see [1] again -- this
time for exported variables).
1.
http://golang.org/pkg/net/http/