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?