Golang: Erstellen eines konstanten Typs und Einschränken der Werte des Typs

Ich habe eine Frage zu Konstantentypen, die auf bestimmte Werte beschränkt sind, und wie Sie dies in Golang erreichen. Angenommen, ich erstelle einen Typunary welches zwei konstante Werte hatPositive(1) undNegative(-1) und ich möchte den Benutzer dieses Typs einschränken unary) von der Erstellung anderer Werte vom Typunary. Erreiche ich dies, indem ich ein Paket erstelle und die Werte zu @ machPositive undNegative sichtbar machen und den Typunary auf das enthaltende Paket beschränkt? Siehe Code unten für Beispiel

package unary

type unary int////not visible outside of the package unary

const (
    Positive unary = 1//visible outside of the package unary
    Negative unary = -1//visible outside of the package unary
)

func (u unary) String() string {//visible outside of the package unary
    if u == Positive {
        return "+"
    }
    return "-"
}

func (u unary) CalExpr() int {//visible outside of the package unary
    if u == Positive {
        return 1
    }
    return -1
}

Ist dies der richtige Weg, um einen Typ auf bestimmte konstante Werte zu beschränken?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage