package main import "slices" type stateContents []int // Represents the contents of the current state - character classes can have multiple contents, which is why it is represented as a slice func newContents(data ...int) stateContents { toReturn := stateContents{} for _, i := range data { toReturn = append(toReturn, i) } return toReturn } func rune2Contents(data []rune) stateContents { // Convert a rune slice into a stateContents type, then return it. The runes are simply cast to ints. toReturn := newContents() for _, r := range data { toReturn = append(toReturn, int(r)) } return toReturn } // Returns true if c contains the given value func (c stateContents) contains(val int) bool { return slices.Contains(c, val) }