Reading OS X file tags
Using a custom type (with underlying type int) and using const to define the predefined colors is the perfect way to go.

If a user would want to use int, it is still possible by using a simple type conversion:

var myIntColor = 1 // Gray
var mycolor TagColor = TagColor(myIntColor)


Although by not using the predefined constants, you increase the possibility of errors (as the compiler will not be able to provide compile-time checks).

Note that your constant declaration can be a lot more compact and idiomatic by using the iota predeclared identifier which is auto-incremented, so you can use = iota to give value to all your colors. And also quoting from the spec: Constant declarations:


  Within a parenthesized const declaration list the expression list may be omitted from any but the first declaration. Such an empty list is equivalent to the textual substitution of the first preceding non-empty expression list and its type if any. Omitting the list of expressions is therefore equivalent to repeating the previous list.


This means you only have to write the initialization value for the first constant, and if you omit the rest, the same will be used for the rest (but iota will be auto-incremented of course). So your constant declaration can be this:

const (
    None TagColor = iota
    Gray
    Green
    Purple
    Blue
    Yellow
    Red
    Orange
)


Specifying a String() method for your type is also recommended, as many of the standard library functions check and use that if provided, for example the fmt package when printing values:

col := Orange
fmt.Println(col) // Will print "Orange"


The fmt package checks if the type of the value you passed has a String() method, and if it does, it will be called and its result will be printed.

Also note that you can "automatically" generate the String() method for your constants with go generate. There is a stringer tool which can be used with go generate and it generates a .go source file doing more or less what you did, but with a more efficient code. You can read more about go generate in the blog post Generating code.