In Go we can say:
type Month int
to create a new type based off of int.
Is it possible to also say that the range of values allowed for this type is 1 - 12, and to guarantee that no value < 1 or > 12 can be assigned?
In Go we can say:
type Month int
to create a new type based off of int.
Is it possible to also say that the range of values allowed for this type is 1 - 12, and to guarantee that no value < 1 or > 12 can be assigned?
No, you cannot put limits on an int whether you define it as a custom type or not. The closest you can get is something like the following code using a construct called iota
type Month int
const (
Jan Month = iota + 1
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
)
func main() {
fmt.Println(Jan, Feb, Mar)
}
This will print 1 2 3
. There are a lot more uses for it, you can look up more information here https://splice.com/blog/iota-elegant-constants-golang/
This does not guarantee that you cannot assign random values to the resulting variable, but as long as you use the defined constants everywhere you should be fine.